其他分享
首页 > 其他分享> > 使用servletContext共享数据的基本方法

使用servletContext共享数据的基本方法

作者:互联网

使用servletContext共享数据

使用servletContext方法可以实现servlet程序之间的数据共享,传统直接采用io流的办法比较麻烦。servletContext类似于上下文的形式,给servlet之间提供了通道。下面创建了两个servlet,第一个servlet的作用是提供数据,第二个servlet的作用是读取第一个servlet的数据。

第一步:创建提供数据的servlet

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();//创建一个ServletContext对象
        
        String name = "小赫";//创建了一个String类型的属性name
        context.setAttribute("name", name);//参数是键值对k-v的方式
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

第二步:创建读取数据的servlet

public class GetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();//这里同样创建一个ServletContext对象
        //这里需要强转成String类型,Object类型编译会报错,用getAttribute方法得到了HelloServlet里面的name属性
        String name = (String) context.getAttribute("name");

        resp.setContentType("text/html;charset = utf-8");//设置字符编码格式,避免乱码
        resp.getWriter().println("名字:" + name);//
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

第三步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--我用的是tomcat8.5.78,如果是9的话可以写成version="4.0",最好和tomcat里的web.xml保持一致-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1"> 
  <!--配置第一个servlet-->
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.xiaohe.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
  <!--配置第二个servlet-->
  <servlet>
    <servlet-name>getC</servlet-name>
    <servlet-class>com.xiaohe.servlet.GetServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>getC</servlet-name>
    <url-pattern>/getContext</url-pattern>
  </servlet-mapping>

</web-app>

这样运行之后,当请求第一个servlet后再请求第二个servlet时,浏览器会输出名字:小赫。如果直接请求第二个servlet,浏览器会输出名字:null,因为没有获取到数据,name值为null。

标签:name,ServletException,方法,resp,req,servletContext,共享,servlet,String
来源: https://www.cnblogs.com/xiaoheshuo/p/16336066.html