javaWeb四大域对象

JavaWeb的四大作用域为:PageContext,ServletRequest,HttpSession,ServletContext;

作用域从小到大为:PageContext(jsp页面),ServletRequest(一次请求),HttpSession(一次会话),ServletContext(整个web应用)。

PageContext域:作用范围是整个JSP页面,是四大作用域中最小的一个;生命周期是当对JSP的请求时开始,当响应结束时销毁。

ServletRequest域:作用范围是整个请求链(请求转发也存在);生命周期是在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。

HttpSession域:作用范围是一次会话。生命周期是在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate() ,可以立即销毁session。

注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session不存在。  如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。

ServletContext域:作用范围是整个Web应用。当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁。


参考:

https://blog.csdn.net/github_36301064/article/details/53289613

https://www.cnblogs.com/skjsg/p/4707032.html


Servlet三大域对象的应用 request、session、application(ServletContext)

ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

1. request

request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。

用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().

2. session

服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。

会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。   

用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。

方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();

获得session对象方法:

在Servlet中:HttpSession session = request.getSession();

由于session属于jsp九大内置对象之一,当然可以直接使用。例如:<%session.serAttribute("name","admin")%>。 

session被销毁

          1)session超时;

          2)客户端关闭后,再也访问不到和该客户端对应的session了,它会在超时之后被销毁;

          3)调用session. invalidate();

备注: session是服务器端对象,保存在服务器端。并且服务器可以将创建session后产生的sessionid通过一个cookie返回给客户端,以便下次验证。(session底层依赖于cookie)

3. Application(ServletContext)

作用范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用;

获取Application对象方法(Servlet中): 

                  ServletContext app01 = this.getServletContext();

                  app01.setAttribute("name", "kaixuan");    //设置一个值进去

                  ServletContext app02 = this.getServletContext();

                    app02.getAttribute("name");    //获取键值对 

ServletContext同属于JSP九大内置对象之一,故可以直接使用

备注:服务器只会创建一个ServletContext 对象,所以app01就是app02,通过app01设置的值当然可以通过app02获取。

参考:https://blog.csdn.net/qq_26676207/article/details/52592846

https://blog.csdn.net/dsj15831653282/article/details/58313130

https://www.cnblogs.com/taiguyiba/p/6130293.html

你可能感兴趣的:(javaWeb四大域对象)