request是一個域對象,也就是說是一個能讓servlet共享數據的對象。它的範圍是一次請求及其轉發。也就是一個servlet接收到一個請求並將其轉發到其它servlet.這些servlet可以共享這個request的數據。所以它的範圍是比ServletContext小的。
1,request域對象
範圍如下圖所示
request是域對象是一個存儲數據的對象。所以需要知道如何往裏面增刪改查。
域對象通用的存儲數據方法
setAttribute(String,Objcet);//新增或修改
getAttribute(String)//根據存的key獲取
removeAttribute(String)//根據key刪除
看一下代碼,從servletDemo1存儲一個name=zhangsan,將它放到request域中,在轉發request給servletDemo2讓它來獲取這個name
public class ServletDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request設置數據
request.setAttribute("name","zhangsan");
request.getRequestDispatcher("/servletDemo2").forward(request,response);
}
}
public class ServletDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request獲取數據name,如果能輸出對應的name說明共享成功
String name = (String)request.getAttribute("name");
System.out.println("servletDemo2:"+name);
//request刪除數據name
request.removeAttribute("name");
String name1 = (String)request.getAttribute("name");
System.out.println("servletDemo2,:"+name1);
}
}
啓動tomcat併發送請求執行servletDemo1,我的請求路徑
http://localhost:8080/qjq/servletDemo1
回車執行,結果如下:
輸出了zhangsan說明共享數據成功,後面輸出了null說明刪除完畢