我们知道JSP可以编写html代码,也可以编写java代码,那么这些html的内容是如何展示在浏览器上的?java代码是如何被执行的?带着这樱厮吞簌些问题我们一起来看下JSP的运行原理,了解了运行原理这些问题将会迎刃而解。
工具/原料
计算机
JSP毕业设计源码、论文: https://pan.baidu.com/s/1mic8hs8 密码: v3ge
准备工作
1、我们在开发工具IDEA中新建一个web项目名称为:jsp_demo,在web目录写创建hello.jsp代码内容如下:启动tomcat服务器进行访问
运行流程分析
1、浏览器发起请求,向服务器获取hello.jsp
2、会去tomcat的conf目录下的web.xml中寻找对应的映射路径
3、根绝后缀名匹配的原则,找到<servlet-name>为jsp的JspServlet
4、JspServlet会将hello.jsp翻译为hello_jsp.java,同事便以为hello_jsp.class该文件在IDEA发布项目的虚拟路径的work目录下:
5、翻译后的hello_jsp.java,继承了抽象类HttpJspBase
6、HttpJspBase继承了抽象类HttpServ盟敢势袂let注意:HttpJspBase在tomcat的lib目录下的jasper.jar中,解压后通过IDEA的反编译可以看到继承关系
7、此时会执行HttpServlet的service方法,通过查看源码我们发现service方法调用的是_jspSerice方法
8、由于hello_jsp.java继承了抽象类HttpJspBase,HttpJspBase又继承了抽象类HttpS髫潋啜缅ervlet,因此最终会执行子类的_jspSerice方法我们发现hello_jsp.java中将html的内容以response输出流的方式响应给浏览器,java代码正常的执行。