使用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