JSP页面执行过程

JSP页面其实是一个Servlet。JSP 页面是在JSP容器中运行的。Servlet 容器一般也是JSP 容器。例如, Tomcat 就是一个Servlet/JSP 容器。

第一次请求一个JSP页面时,Servlet/JSP 容器要做两件事情:

1. 将JSP 页面转换成一个JSP页面实现类,这是一个实现javax.servlet.jsp.JspPage接口或其子接口javax.servlet.jsp.HttpjspPage 的Java类。JspPage是javax.servlet.Servlet的子接口,这样会使每个JSP 页面都成为一个Servlet. 所生成Servlet 的类名取决于Servlet/JSP 容器。这一点不必操心,因为不需要你直接处理。如果有转换错误,错误消息将会发送到客户端。

2. 如果转换成功, Servlet/JSP 容器将会编译Servlet 类。之后,容器加载和实例化Java字节码,并执行它通常对Servlet 所做的生命周期操作。

对于同一个JSP 页面的后续请求, Servlet/JSP 容器会查看这个JSP页面自从最后一次转换以来是否修改过。如果修改过,就会重新转换、重新编译,并执行。如果没有,则执行内存中已经存在的JSP Servlet 。这样,第一次调用JSP 页面的时间总是会比后续请求的更长,因为它需要转换和编译。为了解决这个问题,可以采取以下任意一种措施:

配置应用程序,以便在应用程序启动之时,调用所有的JSP 页面(实际上是指转换和编译) , 而不是在初始请求时才调用。

预先编译JSP页面,并将它们以Servlet 的方式进行部署。

jquery打开一个jsp页面_jquery打开一个jsp页面

 

Servlet与JSP生命周期对比

 

Servlet的生命周期:

1)构造方法(第1次访问)

2)init方法(第1次访问)

3)service方法

4)destroy方法          

Jsp的生命周期

1)翻译: jsp->java文件

2)编译: java文件->class文件(servlet程序)

3)构造方法(第1次访问)

4)init方法(第1次访问):_jspInit()

5)service方法:_jspService()

6)destroy方法:_jspDestroy()

Jsp的最佳实践

Servlet技术: 开发动态资源。是一个java类,最擅长写java代码

jsp技术: 开发动态资源。(通过java代码)最擅长输出html代码。

 

各取所长:

在web项目中涉及到逻辑:

1)接收参数      servlet做

2)处理业务逻辑,返回结果    servlet做

3)显示数据到浏览器      jsp做

4)跳转到其他页面        servlet做

 

servlet+jsp模式

servlet:

            1)接收参数

            2)处理业务逻辑

            3)把结果保存到域对象中

            4)跳转到jsp页面

Jsp:

            1)从域对象取出数据

            2)把数据显示到浏览器

 

servlet的数据      jsp页面

List<Contact>    使用域对象 共享数据