美文网首页
JavaWeb四大域对象

JavaWeb四大域对象

作者: Zhuang_ET | 来源:发表于2018-06-12 15:13 被阅读0次

JavaWeb有ServletContext、ServletRequest、HttpSession、PageContext四大域对象,下面主要从域对象的生命周期、作用、作用范围进行介绍。
Servlet中只有前三个域对象,JSP中多了一个pageContext对象。

一、ServletContext

1.生命周期

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

2.作用范围

整个web应用。

3.作用

由于一个web应用中的所有Servlet共享同一个ServletContext对象:因此Servlet对象之间可以通过ServletContext来是实现通讯。ServletContext对象通常也被称为context域对象。

应用

  • 多个Servlet通过ServletContext对象实现数据共享。
  • 获取web应用的初始化参数(getInitParameter)。
  • 用ServletContext实现请求转发(this.getServletContext().getRequestDispatcher().forward())。
  • 利用ServletContext对象读取资源文件。
    servletContext.getRealPath("/xx.properties"),servletContext.getResourceAsStream()。
    另外,顺便说一下,如果要在非servlet中获取资源文件,无法取得servletContext对象,这时候就得通过类加载器ClassLoader来getResourceAsStream(),此方法通过类加载器将资源文件直接加载到内存中,有更新延迟的问题,适合小文件的读取,对于大资源文件,将会占用较大的内存。还有,通过classLoader也可以获取资源文件路径,具体通过ClassLoader.getResource("/xx.properties").getPath(),没有更新延迟问题。

二、ServletRequest

1.生命周期

在service方法调用前由服务器创建,传入service()方法,整个请求结束,ServletRequest生命周期结束。

2.作用范围

整个请求链。(请求转发也存在,请求转发属于一次请求。)

3.作用

  • 在整个请求链中共享数据,主要可通过getAttribute、setAttribute将数据带到jsp页面中进行显示。
  • 获得客户端信息,可通过getRequestURL()、getRequestURI()、getQueryString()、getPathInfo()、getRemoteAddr()、getRemoteHost()、getRemotePort()、getLocalAddr()、getLocalName()。
  • 获得客户机请求头,getHeader(String s)、getHeaders(String s)、getHeaderNames()。
  • 获得客户机请求参数(客户端提交的数据):getParameter()等。

三、Session

1.生命周期

服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个并返回。
当一段时间内,session没有被使用(默认是30分钟),服务器会销毁该session。如果服务器非正常关闭(强行关闭),还未到期的session也会被销毁。
另外,调用session的invalidate()方法可以立即销毁session。

2.作用范围

一次回话。

四、PageContext

PageContext对象是JSP页面中才有的对象。

1.生命周期

当对JSP的请求开始时创建,当响应结束时销毁。

2.作用范围

整个JSP页面,是四大域中最小的一个。

3.作用

pageContext对象封装了8大隐式对象,通过它可以获得其它的8个对象。

  • getException()返回Exception。
  • getPage()返回Page。
  • getRequest()返回request。
  • getResponse()返回response。
  • getServletConfig()返回config。
  • getServletContext()返回application。
  • getSession()返回session。
  • getOut()返回out。

另外,通过pageContext还能获取其所有域中的数据。

4.getAttribute()和findAttribute()的区别

getAttribute()只能获取自己域中保存的属性,而findAttribute()则会按照pageContext->request->session->servletContext的顺序查找有无对应的属性。

四大域中,HttpRequest和HttpResponse,session和cookie有很多联系,后面会补上response和cookie的总结。

相关文章

  • JavaWeb四大域对象

    JavaWeb有ServletContext、ServletRequest、HttpSession、PageCon...

  • javaWeb四大域对象

    JavaWeb的四大作用域为:PageContext,ServletRequest,HttpSession,Ser...

  • 三、EL表达式和JSTL

    EL表达式和JSTL标签 在JavaWeb中,JSP技术提供9大内置对象,其中4个对象(四大作用域)用于存储数据,...

  • JavaWeb之 监听器

    JavaWeb中八大监听器 域对象监听器 1.ServletContextListener2.ServletCon...

  • JavaWeb中的域对象

    3.servletContext与application的异同 相同点两者本质上是一样的,相当于建立了2个不同名称...

  • Servlet常用的对象

    四大对象 ServletConfig的API: ServletContext对象的核心API 对象创建和得到 域对...

  • 26.九大内置对象

    JSP的内置对象 JSP的四大作用域: 作用域对象就只能在自己的作用范围之内共享数据. SP中隐式对象的名称 作用...

  • JavaWeb-JSP内置对象和域对象

    每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将J...

  • NO.4 JSP中的9个内置对象

    指在JSP的<%=%> 和<% %>中可以直接使用的对象 四大域对象:实际开发 PageContext : pag...

  • 四大域对象:

    request:只对用户的一次请求有效。session:对一次会话有效,会话的生命周期不结束,会话就不结束,属于某...

网友评论

      本文标题:JavaWeb四大域对象

      本文链接:https://www.haomeiwen.com/subject/dumkeftx.html