JSP的运行原理是什么?JSP的作用域有哪些?

简介: JSP四大作用域分别为:page、request、session、application。

【5月更文挑战第2天】JSP四大作用域分别为:page、request、session、application


JSP的作用域


JSP四大作用域分别为:page、request、session、application

第一个作用域是page,只在当前页面有效,也就是用户请求的页面有效。page只在当前页面有效,也就是用户请求的页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。

第二个作用域是request,他在当前请求中有效。request可以通过setAttribute()方法实现页面中的信息传递,也可以通过forward()方法进行页面间的跳转,需要注意的是request是转发不是重定向,转发相对于浏览器来说是透明的,也就是无论页面如何跳转,地址栏上显示的依旧是最初的地址。

第三个作用域是session,它在当前回话中有效。当一个台电脑上的同一浏览器对服务器进行多次访问时,在这多次访问之间传递的信息就是session作用域的范围。它从浏览器发出第一个HTTP请求即可认为会话开始,但是会话结束的时间是不确定的,因为在浏览器关闭时并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以通过 setMaxInactiveInterval(int)方法进行设置,或是通过invalidate()方法强制结束当前 会话。

第四个作用域是application,他在所有的应用程序中都有效,也就是当服务器开始到服务器结束这段时间,application作用域中存储的数据都是有效的,同样可以通过setAttribute赋值和getAttribute取值。

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

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

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格式的响应信息发送回客户端。

相关文章
|
7月前
|
Java
18JavaWeb基础 - 图解JSP输出缓冲区原理
18JavaWeb基础 - 图解JSP输出缓冲区原理
21 0
|
7月前
|
Java
17JavaWeb基础 - JSP的九大内置对象/四大作用域
17JavaWeb基础 - JSP的九大内置对象/四大作用域
37 0
|
8月前
|
XML Java 数据库连接
jsp访问原理和跳转流程
jsp访问原理和跳转流程
63 0
|
4天前
|
安全 Java
JSP中的隐式对象和四种会话作用域
JSP中的隐式对象和四种会话作用域
62 0
|
4天前
|
前端开发 Java 数据库
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解
|
4天前
|
前端开发 JavaScript Java
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
|
10月前
|
Java
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(二)
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(二)
85 0
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(二)
|
10月前
|
Java 存储
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(一)
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(一)
39 0
欢迎来到Jsp编程课时四——内置对象 中四大作用域。(一)
|
4天前
|
存储 Java
JSP原理以及基本语法
JSP原理以及基本语法
|
7月前
|
Java
每日一道面试题之 介绍一下jsp 的 4 种作用域
每日一道面试题之 介绍一下jsp 的 4 种作用域

相关课程

更多
http://www.vxiaotou.com