servletContext的使用与介绍

  • Post author:
  • Post category:其他

练习使用大管家servletContext
  • 1.ServletContext介绍
    ServletContext官方叫servlet上下文。

  • 2. 域对象
    “域对象”是服务器在内存中创建的存储空间,域对象:PageContext(页面)、Request(请求)、Session(服务的session,有时限)、ServletContext(整个服务器)。

    ServletContext就是一个域对象,用于在不同的Servlet之间传递与共享数据。凡是域对象都有如下3个方法:

方法名称 作用
setAttribute(String name,Object value) 向域对象里面以key-value形式添加数据
getAttribute(String name) 根据指定的key读取域对象里面的数据
removeAttribute(String name) 根据指定的key从域对象里面删除数据
  • 3.ServletContext 何时创建,何时销毁?
    web容器在启动的时候,会为容器中每个web应用都创建一个对应的ServletContext对象,它代表了当前的web应用;

    一个web应用只对应一个ServletContext,所以ServletContext的作用范围是整个web应用。
    web应用从服务器移除托管,或者是关闭服务器时销毁。

  • 4. ServletContext 的作用范围
    只要在同一个项目里面,都可以存取。但是App1项目存,在App2项目取,是取不到的?因为它们的ServletContext对象不同。

    注意:ServletContext实例包含了本web应用中所有servlet共享的资源信息。通过提供一组方法给servlet使用,用来和servlet容器通讯,比如获取文件的MIME类型、分发请求、记录日志等。

  • 二、实现不同Servlet之间共享数据

在一个Servlet中保存的数据,可以在另外一个servlet中拿到。
方法:
(1)设置数据的API:setAttribute(“键”,“值”);
(2)获取数据的API:getAttribute(“键”);
(3)删除数据的API:removeAttribute(“键”);

  • 创建HelloServlet.java
public class HelloServlet extends HttpServlet {
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("username","zhangsan"); //将一个数据保存在了ServletContext中
    }
}

  • 创建GetServlet.java
public class GetServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        String username = (String)servletContext.getAttribute("username");
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        response.getWriter().print("名字:"+username);

    }
}

  • web.xml
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>cn.sdcit.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/set</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>GetServlet</servlet-name>
    <servlet-class>cn.sdcit.GetServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>GetServlet</servlet-name>
    <url-pattern>/get</url-pattern>
</servlet-mapping>

验证1:

先访问/set存入数据到ServletContext;
再访问/get从ServletContext取出数据。

验证2:

如果没有存入数据,只能取出null


版权声明:本文为plan_Dream原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。