1. jsp的工作模式

jsp的工作模式是请求/相应模式,客户端首先发出HTTP请求,jsp程序收到请求后会进行处理并返回处理结果。在一个jsp文件第一次被请求时,jsp引擎(容器)把该jsp文件转换成一个Servlet,而这个引擎本身也是一个Servlet。

2. jsp的工作原理:

  1. 客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。

  2. 服务器根据接收到的客户端的请求来加载相应的JSP文件。

  3. Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet文件(.java)。

  4. JSP引擎将生成的Servlet代码编译成Class文件。

  5. 服务器执行这个Class文件。

  6. 最后服务器将执行结果发送给浏览器进行显示。

3. jsp的运行过程:

  1. 客户端发送请求,请求访问jsp文件。

  2. jsp容器先将jsp文件转化成一个java源文件(Java Servlet源程序),在转换过程中,如果发现jsp文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。

  3. 如果转换成功,则jsp容器将生成的java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。

  4. 由Servlet容器加载转换后的Servlet类(.class文件)创建一个该Servlet(jsp页面的转换结果)实例,并执行Servlet的jspInit()方法。jspInit()方法在Servlet的整个生命周期中只会执行一次。

  5. 执行jspService()方法来处理客户端的请求。对于每个请求,jsp容器都会创建一个新的线程来处理它。如果多个客户端同时请求该jsp文件,则jsp容器也会创建多个线程,使得每一个客户端请求都对应一个线程。jsp运行过程中采用这种多线程的执行方式可以极大地降低对系统资源的需求,提高系统的并发量并缩短相应时间。需要注意的是,由于第4步生成的Servlet是常驻内存的,所以响应的速度非常快。

  6. 如果jsp文件被修改了,则服务器将根据设置来决定是否对该文件重新编译。如果需要重新编译,则使用重新编译后的结果取代内存中常驻的Servlet,并继续上述处理过程。

  7. 虽然jsp效率很高,但在第一次调用的时候往往由于需要转换和编译,所以会产生一些轻微的延迟。此外,由于系统资源不足等原因,jsp容器可能会以某种不确定的方式将Servlet从内存中移除,发生这种情况时,首先会调用jspDestroy()方法,然后Servlet实例会被加入“垃圾收集”处理。

  8. 当请求处理完成后,响应对象由jsp容器接受,并将html格式的响应信息发送回客户端。

4. 注意事项:

  1. 可以在jspInit()方法中进行一些初始化工作(建立数据库的连接、建立网络连接、从配置文件中获取一些参数等)。

  2. 可以在jspDestroy()方法中释放相应的资源等。

  3. 如果项目发布在Tomcat的webapps目录中,源文件和.class文件可以在“Tomcat安装目录/work/Catalina/localhost/应用名/”下找到。

联系作者

如果有什么问题请访问下面博主网站发表评论,我将第一时间回复您

jsp运行原理

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐