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