全国咨询/投诉热线:400-618-9090

首页技术文章正文

什么是JSP,JSP的运行原理是什么?

更新时间:2020-06-02 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif


在动态Web项目的开发中,经常需要动态生成HTML。内容(如系统中的当前在线人数需要动态生成)。如果使用Servlet实现HTML页面数据的统计,则需要使用大量的输出语句。同时,如果静态内容和动态内容混合在一起,那么也将导致程序非常臃肿。为了克服Servlet的这些缺点,Oracle( Sun)公司推出了JSP技术。

JSP(Java Server Pages)是建立在Servlet规范之上的动态网页开发技术,其实质是一个简化的Servlet,在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用于实现网页中静态内容的显示,Java代码用于实现网页中动态内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为jsp。

JSP技术所开发的Web应用程序是基于Java的,其使用具有如下几点特征。

1、预编译

预编译指在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时会直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大幅度提升了客户端的访问速度。

2、业务代码相分离

在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离,

3、组件重用

JSP可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者将其作为一个数据存储模型,在JSP页面甚至整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中

4、跨平台

由于JSP是基于Java语言的,它可以使用Java API,所以它也是跨平台的,可以应用于不同的系统,如 Windows和Linux等。

 

JSP运行原理

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

1591078779176_JSP执行原理.jpg


JSP的运行过程具体如下。

(1) 客户端发出请求,请求访问JSP文件。

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

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

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

(5) 执行jspService()方法处理客户端的请求。对于每一个请求,JSP容器都会创建个新的线程处理它。如果多个客户端同时请求该JSP文件,则JSP容器会创建多个线程,使每个客户请求都对应一个线程。

(6) 如果JSP文件被修改了,则服务器将根据设置决定是否对该文件重新进行编译,果需要重新编译,则使用重新编译后的结果取代内存中的Servlet,并继续上述处理过在需要注意的是,虽然JSP效率很高,但在第一次调用时往往由于需要转换和编译,所以会生一些轻微的延迟。

(7) 如果系统出现资源不足等问题,JSP容器可能会以某种不确定的方式将Servlet从内存中移除,发生这种情况时,首先会调用jspDestroy ()方法,然后Servlet实例会被作为“垃圾”进行处理。

(8) 当请求处理完成后,响应对象由JSP容器接收,并将HTML格式的响应信息发送回客户端。推荐了解java培训课程

 

猜你喜欢:

什么是Java语言,java是做什么的?

什么是Docker?有什么特点?

Docker与虚拟机的区别

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名