Servlet三大域对象的应用 request、session、application(ServletContext)

ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

1.获取servletcontext对象:

ServletContext sc = null;
sc = request.getSession().getServletContext();
//或者使用
//ServletContext sc = this.getServletContext();
System.out.println("sc=" + sc);

2.方法:

域对象,获取全局对象中存储的数据

所有用户共用一个

servletDemo1

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("处理前的名称:" + filename); ServletContext sc = this.getServletContext();
sc.setAttribute("name", "太谷饼"); }

然后再servletDemo2中获取该servletcontext对象

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { ServletContext sc = request.getSession().getServletContext();
String a = (String)sc.getAttribute("name");
response.getWriter().write(a);
}

在浏览器中访问该地址:http://localhost/app/servlet/servletDemo2

获取资源文件

1.采用ServletContext对象获取

特征:必须有web环境,任意文件,任意路径。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //拿到全局对象
ServletContext sc = this.getServletContext();
//获取p1.properties文件的路径
String path = sc.getRealPath("/WEB-INF/classes/p1.properties");
System.out.println("path=" + path);
//创建一个Properties对象
Properties pro = new Properties();
pro.load(new FileReader(path)); System.out.println(pro.get("k"));
}

2.采用resourceBundle获取

只能拿取properties文件,非web环境。

//采用resourceBundle拿取资源文件,获取p1资源文件的内容,专门用来获取.properties文件
ResourceBundle rb = ResourceBundle.getBundle("p1");
System.out.println(rb.getString("k"));

3.采用类加载器获取:

任意文件,任意路径。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //通过类加载器
//1.通过类名 ServletContext.class.getClassLoader()
//2.通过对象 this.getClass().getClassLoader()
//3.Class.forName() 获取 Class.forName("ServletContext").getClassLoader
InputStream input = this.getClass().getClassLoader().getResourceAsStream("p1.properties");
//创建Properties对象
Properties pro = new Properties(); try {
pro.load(input);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//拿取文件数据
System.out.println("class:" + pro.getProperty("k"));
}

ServletContext对象--三大域对象的更多相关文章

  1. jsp九个内置对象、四个域对象及Servlet的三大域对象

    一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...

  2. Servlet三大域对象

    Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...

  3. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象

     JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...

  4. JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标 ...

  5. JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1.    JSP模板元素:JSP中HT ...

  6. 三大域对象的使用总结request域 + session域 +

    request域: servlet 产生数据显示完后,就没用了. session域:数据除了显示之外,等一会还要用. servletContext域: 数据除了显示之外不仅还要用还要给其他人用.

  7. ServletContext域对象

    场景:假设某个web服务,有两个servlet分别是servlet1和servlet2,servlet1要传参数name=zhangsan传送给servlet2,传统方法如下: servlet1端:用 ...

  8. Servlet的三个域对象

    我们在开发javaweb项目的时候,经常会遇到jsp和Servet之间互相传值,既然有传值,就要有对象来传,这里先说Servlet的三大域对象,request,session,application他 ...

  9. 在Action中操作域对象

    ----------------------siwuxie095 在 Action 中操作域对象 1.在 Action 中可以操作的域对象主要有三个: (1)Request (2)Session (3 ...

随机推荐

  1. python和django的一些小技巧(locals()...)

    locals() 技巧: 思考一下我们对 current_datetime 的最后一次赋值: >>> import datetime >>> def current ...

  2. ubuntu修改grub2

    转自修改系统启动项 grub2配置的方法 ubuntu 在早期的Ubuntu中,使用Grub作为系统的启动引导程序,想修改系统启动项非常简单,只要用gedit打开系统菜单设定文件( sudo gedi ...

  3. Android 观察系统中短信内容的变化(内容观察者)

    //内容观察者(如果系统的短信发生了变化,比如刚获取一条短信,那么将触发onChange方法) ContentResolver contentResolver = getContentResolver ...

  4. Android开源项目发现---Menu 篇(持续更新)

    1. MenuDrawer 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘.ListView边缘.ViewPager变化划出菜单等. 项 ...

  5. eclipse或IDEA连接魅蓝

    1.首先 安装ADB 驱动 http://developer.android.com/tools/device.html 如果没装就自行去下载安装 别的品牌都可以顺利连接,魅族手机特有的原因导至在开发 ...

  6. message 匹配不上grok正则 也会写入到elasticsearch

    { "message" => "scan test 20161201", "@version" => "1" ...

  7. 【CF】196 Div.2 D. Book of Evil

    显然这个图是一课树,看着题目首先联想到LCA(肯定是可以解的).但是看了一下数据大小,应该会TLE.然后,忽然想到一个前面做过的题目,大概是在一定条件下树中某结点旋转成为根后查询最长路径.结果灵感就来 ...

  8. UVA_1025_A_Spy_in_the_Metro_(动态规划)

    描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  9. android报错——The import android.util cannot be resolved

    Eclipse导入外部Android工程时,总会遇到The import android.util cannot be resolved 错误,解决方法如下: 首先检查project.properti ...

  10. [PeterDLax著泛函分析习题参考解答]第1章 线性空间

    1. 证明定理 1. 2. 验证上述结论. 3. 证明定理 3. 4. 证明定理 4. 证明: 由 $$\bex x=\sum_{k=1}^{n-1}a_k\cdot \sum_{j=1}^{n-1} ...