JSP原理剖析
1、定义
- JSP(Java Servet Page)即:java服务器端页面,也和Servlet一样,是用于开发动态Web的技术
- 最大的特点
- 写JSP就像在写HTML
- 区别:HTML只给用户提供静态的数据,而JSP页面中可以嵌入java代码为用户提供动态数据
2、JSP原理
-
JSP怎么执行的
-
服务器内部工作
-
Tomcat中有一个work目录
-
IDEA中使用Tomcat时,会在IDEA的Tomcat中产生一个work目录,即在
C:\Users\夕‘风\.IntelliJIdea2019.3\system\tomcat\Unnamed_webapp\work\Catalina\localhost\s6\org\apache\jsp
-
发现jsp页面转变为了java程序
-
所以浏览器向服务器发送请求,不管访问什么资源其实都是在访问Servlet,jsp最终被转换为java类
-
jsp本质上就是一个Servlet
-
index_jsp.java源码分析
//初始化 public void _jspInit() { } //销毁 public void _jspDestroy() { } //JSPService(JSP服务) public void _jspService(HttpServletRequest request,HttpServletResponse response){ }
-
public void _jspService()分析
-
判断请求
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD"); return; }
-
内置一些对象
final javax.servlet.jsp.PageContext pageContext; //页面上下文 javax.servlet.http.HttpSession session = null; //Session final javax.servlet.ServletContext application; //Servlet中的ServletContext改名为application final javax.servlet.ServletConfig config; //config(配置) javax.servlet.jsp.JspWriter out = null; //out final java.lang.Object page = this; //page:当前页 HttpServletRequest request //请求 HttpServletResponse response //响应
-
html页面输出前的代码
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代码会被原封不动的写入到:xxx_jsp.java中,而写的html代码则会被转换为如:
out.write("<html>\r\n");
-
-
-