课程目标:

① 在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 整个应用程序都能够訪问

Servlet第七课:ServletContext HttpSession 以及HttpServletRequest之间的关系的更多相关文章

  1. 潭州课堂25班:Ph201805201 django框架 第七课 常用 字段类型及参数,关系表的实现,表关系对象add,create的方法 (课堂笔记)

    写个类,创建表格 执行命令生成文件 提交,在数据库中创建 进入数据库查看 对数据进行修改操作 只有用到 save() 才能触发 updaer_time 的更改, 下边 update 方法不会修改 up ...

  2. Web容器、Servlet容器、Spring容器、SpringMVC容器之间的关系

    以下内容为个人理解,如有误还请留言指出,不胜感激! Web容器 web容器(web服务器)主要有:Apache.IIS.Tomcat.Jetty.JBoss.webLogic等,而Tomcat.Jet ...

  3. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. The confusion about jsp four scopes and ServletContext,HttpSession,HttpServletReqest,PageContext

    The jsp four scopes are same with ServletContext,HttpSession,HttpServletRequest,PageContext? How ser ...

  5. JavaWeb -- 服务器传递给Servlet的对象 -- ServletConfig, ServletContext,Request, Response

    1.  ServletConfig  有一些东西不合适在程序中写死,应该写在web.xml中,比如 文字怎么显示, 访问数据库名 和 密码, servlet要读取的配置文件 等等.. l在Servle ...

  6. Kali Linux Web 渗透测试视频教程— 第七课 OpenVas

    Kali Linux Web 渗透测试视频教程— 第七课 OpenVas 文/玄魂 视频教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 ...

  7. NeHe OpenGL教程 第七课:光照和键盘

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 【C语言探索之旅】 第二部分第七课:文件读写

    内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...

  9. 【C语言探索之旅】 第一部分第七课:循环语句

    内容简介 1.课程大纲 2.第一部分第七课: 循环语句 3.第一部分第八课预告: 第一个C语言小游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编 ...

随机推荐

  1. luogu P1618 三连击(升级版)

    题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢黄小U饮品完善题意 输入输出格 ...

  2. python操作剪贴板错误提示:pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)

    问题现象:通过打断点,一步步调试可以正常复制和粘贴剪贴板数据.但是直接运行会报错pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板) 问题原因 ...

  3. XV6锁

    锁 xv6 运行在多处理器上,即计算机上有多个单独执行代码的 CPU.这些 CPU 操作同一片地址空间并分享其中的数据结构:xv6 必须建立一种合作机制防止它们互相干扰.即使是在单个处理器上,xv6 ...

  4. Linux vi替换字符串

    1. 基本的替换 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ ...

  5. 把disable maven nature后的项目,恢复菜单呈现出来(Convert to Maven Project)

    把disable maven nature后的项目,恢复菜单呈现出来(Convert to Maven Project) 有的时候需求把disable maven nature后的项目,再转换为mav ...

  6. SpringBoot Beans定义 连接池

    SpringBoot Beans定义 原有Spring框架,定义Bean方法如下 xml配置 组件扫描.@Controller.@Service... 原有Spring框架,参数注入方法如下 常用的参 ...

  7. iOS 混合变换旋转 CGAffineTransform 的使用

    在ios 中, Core Graphics 提供了一系列的函数可以在一个变换的基础上做深层次的变换,如果做一个既要缩放又要旋转的变换,以下的方法比较实用. CGAffineTransformScale ...

  8. python学习之 - 时间模块

    时间模块模块名:time时间模块的转换流程图. UTC:英国格林威治时间.时间戳作用:是用来进行时间计算的.进行加减时间.注意:时间计算是用秒为单位time.process_time():测量处理器运 ...

  9. 从零开始写STL—functional

    function C++11 将任意类型的可调用(Callable)对象与函数调用的特征封装到一起. 这里的类是对函数策略的封装,将函数的性质抽象成组件,便于和algorithm库配合使用 基本运算符 ...

  10. Codeforces 658B Bear and Displayed Friends【set】

    题目链接: http://codeforces.com/contest/658/problem/B 题意: 给定元素编号及亲密度,每次插入一个元素,并按亲密度从大到小排序.给定若干操作,回答每次询问的 ...