jsp的运行流程

首先jsp就是一个servlet,看下Tomcat下的web.xml(注意不是项目中的)有这么一段配置
jsp的运行流程_第1张图片
对应的mapping如下
jsp的运行流程_第2张图片
所以所有以*.jsp 和 *.jspx 结尾的请求都会到 JspServlet 下,执行对应的 service 方法,通过执行该servlet对应的方法后会根据 jsp 文件生成一个 _jsp.java的文件,通过虚拟机编译成.class文件,打开对应的java文件,可看到部分代码如下

response.setContentType("text/html;charset=UTF-8");
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;

out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("  \r\n");
out.write("\t\r\n");
out.write("  \r\n");
out.write("  \r\n");
out.write("  \r\n");
out.write("\t\r\n");
out.write("    ");
out.write("\r\n");
out.write("    \r\n");
out.write("    ");
out.write("\r\n");
out.write("    ");

由以上代码,可以推测出.jsp文件被编译成一个servlet执行,该servlet将对应的内容以流的方式输出

综上,jsp的本质其实就是一个servlet,它是一个根据.jsp文件被tomcat内的 org.apache.jasper.servlet.JspServlet 翻译后的servlet,执行的目的是将.jsp文件中的内容通过response对象以流的方式返回给服务器,服务器再将信息返回给客户端

你可能感兴趣的:(网络编程,servlet)