一.JSP
Java Servlet Pages : java服务器端页面,也和servlet一样,用于动态web技术
最大的特点:
写jsp就像在写在写html
区别:
Html只给用户提供静态数据
jsp页面中可以嵌入Java代码,为用户提供动态数据
二.JSP原理
思路:JSP到底是怎么执行的
代码层面,和HTML没有区别
需求去看服务器内部工作原理
a. tomcat中有一个work目录
b. IDEA在使用tomcat的时候会生成一个work目录
进入了这个目录后,可以发现,jsp转换为了一个java文件
总结:浏览器不管怎么请求jsp页面,实际上就是请求servlet
JSP也会最终转化为Java代码
JSP本质上就是一个servlet:jsp的头文件继承了HTTPservlet
1.请求判断
//初始化
public void _jspInit() { } //销毁 public void _jspDestroy() { } //Jspservice public void _jspService(HttpServletRequest request, HttpServletResponse response)
2.内置了一些对象
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //session 会话
final javax.servlet.ServletContext application; //applicationcontext
final javax.servlet.ServletConfig config; //config
javax.servlet.jsp.JspWriter out = null; //out 网页输出对象
final java.lang.Object page = this; //page 当前页面
javax.servlet.jsp.JspWriter _jspx_out = null; //请求
javax.servlet.jsp.PageContext _jspx_page_context = null; //响应
3.输出页面前增加的代码
response.setContentType("text/html"); //设置页面响应类型,以网页显现 pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); //输出对象 _jspx_out = out;
//这些对象都可以在jsp中直接使用,这是已经编译好的
在jsp页面中:
只要是Java代码都会原封不动的输出;
如果是HTML代码,就会被转换为:
out.write("<html>\n");
实际上就是Java的输出:然后被写到前端
服务器响应客户端的JSP原理:
1.用户通过浏览器向服务器申请了jsp资源
2.服务器加载所需要的jsp页面
3.将jsp页面转换为Java文件:XXX_jsp.java
4.编译转换过来的Java文件
5.变成可执行文件:XXX——jsp.class
6.可执行Java文件响应到服务器中
7.服务器这时候响应客户,返回已经编译好了的Java文件,只不过是以网页形式