您的位置:首页 > 理论基础 > 计算机网络

Servlet第七课:ServletContext HttpSession 以及HttpServletRequest之间的关系

2017-06-18 09:57 393 查看
课程目标:

① 在Servlet中懂得ServletContext HttpSession 以及HttpServletRequest之间的关系

② 懂得怎样使用它们

概念介绍:

1. [共同点]不管对象的作用域怎样,共享变量和获得变量的 方法都是一致的

–setAttribute(“varName”,obj);

–getAttribute(“varName”)。

2. 变量的作用域

ServletContext–范围最大。应用程序级别的,整个应用程序都能訪问

HttpSession – 次之,会话级别的,在当前的浏览器中都能訪问[不论是在同一浏览器开多少窗体,都能够訪问]。可是换个浏览器就不行了。就必须又一次创建session

HttpServletRequest –范围最小,请求级别,请求结束,变量的作用域也结束[也就是仅仅是一次訪问,訪问结束,这个也结束]

3. 实例

插播广告:博客之星评选,点击投我一票,谢谢

以上三个数据的设置:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1
ServletContext sc = this.getServletContext();
sc.setAttribute("sc_name", "sc_value");
// 2
HttpSession session = request.getSession();
session.setAttribute("session_name", "session_value");
// 3
request.setAttribute("request_name", "request_value");

String sc_value = (String) sc.getAttribute("sc_name");
String session_value = (String) session.getAttribute("session_name");
String request_value = (String) request.getAttribute("request_name");

System.out.println(sc_value+":"+session_value+":"+request_value);

// request.getRequestDispatcher("MyServlet2").forward(request, response);

}
Servlet2 的获取:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

ServletContext sc = this.getServletContext();
HttpSession session = request.getSession();

String sc_value = (String) sc.getAttribute("sc_name");
String session_value = (String) session.getAttribute("session_name");
String request_value = (String) request.getAttribute("request_name");

System.out.println(sc_value+":"+session_value+":"+request_value);
}


结论:

HttpServletRequest 仅仅是浏览器的一次訪问,除非servlet做处理,比方

request.getRequestDispatcher("MyServlet2").forward(request, response);

就会传递。

Session 用于同一浏览器,能够互相调用数据

ServletContext 整个应用程序都能够訪问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐