Request的数据共享
(请求转发时的数据共享)
域对象:一个有作用范围的对象,可以在范围内共享数据
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
方法:
- void setAttribute(String name,Object obj):存储数据
- Object getAttitude(String name):通过键获取值
- void removeAttribute(String name):通过键移除键值对
实例代码
第一个servlet中存入数据
@WebServlet("/rqshareDemo01")
public class rqshareDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("rqshareDemo01被访问");
request.setAttribute("msg","hello"); request.getRequestDispatcher("/rqshareDemo02").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
第二个servlet中获取数据
@WebServlet("/rqshareDemo02")
public class rqshareDemo02 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("rqshareDemo01被访问了");
Object msg = request.getAttribute("msg");
System.out.println(msg);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
ServletContext的数据共享
域对象:共享数据
- setAttribute(String name,Object value)
- getAttribute(String name)
- removeAttribute(String name)
ServletContext对象范围所有用户所有请求的数据。
即第一次请求时存入数据(请求一个项目中的一个资源时存入数据),当第一次请求结束后(关闭浏览器后),在第二次请求时也能够获取到数据(重新打开浏览器请求同一个项目中的其他资源时可以获取到存入的数据)。
ServletContext对象在服务器开启时可以被创建,服务器关闭才会被释放。
实例代码
一个项目中的某一个资源文件存入数据
@WebServlet("/SCshareDemo01")
public class SCshareDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取servletContext对象
ServletContext servletContext = this.getServletContext();
//存入数据
servletContext.setAttribute("msg","hello");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
同一个项目中的其他资源文件可以访问数据
@WebServlet("/SCshareDemo02")
public class SCshareDemo02 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取servletContext对象
ServletContext servletContext = this.getServletContext();
//获取数据
Object msg = servletContext.getAttribute("msg");
System.out.println(msg);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}