[J2EE]JavaWeb四大域对象

时间:2022-10-25 13:03:54

一、前言

    在学习ASP.NET的时候大家一定对内置对象有所了解。与之类似的便是JSP的隐式对象。无论是内置对象还是隐式对象,其实啊,都是指的一个东东。请参考我N久之前的博客【ASP.NET】内置对象。JSP一共有九大隐式对象,分为别:Request、Response、Session、Application(servletContext)、Config、Page、Out、Exception、pageContext。这些隐式对象呢,就是我们在使用的使用不必new这个对象,直接使用即可。

    今天呢,咱主要谈论一下四大域名对象,即pageContext,request,session,application。其中Request、Session是公有的,servletContext是servlet独有的。PageContext是JSP独有的。


二、Request:

    Request表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。用处:Request的forword方法用于实现转发,即服务器间同一请求不同页面之间的参数传递,常用于表单的控制值传递。

方法:

[J2EE]JavaWeb四大域对象

三、Session

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

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

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

方法:session.setAttribut()、session.getAttribute();session.removeAttribute();

获得session对象的方法:

        1、在servlet中:HttpSession session=request.getSession

        2、由于session是属于隐式对象之一,自然可以直接使用。如<%session.setAttribute("name",name)>

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


四、Application(ServletContext)

        一个Web应用中,所有的Servlet都可以获取ServletContext对象。也就是说多个Servlet是通过ServletContext对象实现数据共享的。ServletContext对象通常也被称作context域对象。应用场景:聊天室。ServletContext生命周期:有多少个web应用就有多少个与之对应的ServletContext。

Servlet中获得ServletContext对象的方法:

       

ServletContext  app1 = this.getServletContext();
app1.setAttribute("name",name);//设置一个值进去,key value

ServletContext app2 = this.getServletContext();
app2.getAttribute("name"); //获取键值对
四、PageContext