JSP页面既能编写HTML代码,也能嵌入Java代码。其中,HTML内容由服务器解析后以静态网页形式发送至浏览器直接显示;而Java代码则在服务器端执行,生成动态内容并嵌入HTML中。通过理解JSP的编译、转换与执行过程,便可清楚知晓页面如何呈现及代码如何运行,上述问题也随之得以解答。
1、 在IDEA中创建名为jsp_demo的Web项目,并在web目录下新建一个hello.jsp文件。
2、 重写中文表述
3、 启动Tomcat服务器以访问服务
4、 浏览器向服务器发送请求以获取hello.jsp文件。
5、 在Tomcat的conf目录下查找web.xml文件中的映射路径。
6、 根据文件后缀名匹配规则,定位到名为jsp的JspServlet组件。
7、 JspServlet会将hello.jsp转换为hello_jsp.java,并编译生成hello_jsp.class文件,该文件通常存放在IDEA发布项目时对应的虚拟路径下的work目录中,用于实际运行时的请求处理。
8、 hello_jsp.java文件经翻译后,继承自HttpJspBase抽象类。
9、 HttpJspBase类继承自抽象类HttpServlet,该类位于Tomcat安装目录下的lib文件夹中的jasper.jar包内。通过解压该jar文件,并利用IDEA的反编译功能,可清晰查看其具体的继承结构与实现细节。
10、 此时会调用HttpServlet的service方法,通过源码可知,该方法实际执行的是_jspService方法。
11、 hello_jsp.java 继承自 HttpJspBase,而 HttpJspBase 又继承自 HttpServlet。由于多层继承关系,最终会调用子类中实现的 _jspService 方法来处理请求,完成相应的服务逻辑。
12、 在hello_jsp.java中,HTML内容通过response输出流返回给浏览器,Java代码得以正常执行,实现了动态页面的生成与响应,确保了前后端的数据交互顺畅无误。
