ServletContext对象--三大域对象
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对象--三大域对象的更多相关文章
- jsp九个内置对象、四个域对象及Servlet的三大域对象
一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...
- Servlet三大域对象
Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标 ...
- JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HT ...
- 三大域对象的使用总结request域 + session域 +
request域: servlet 产生数据显示完后,就没用了. session域:数据除了显示之外,等一会还要用. servletContext域: 数据除了显示之外不仅还要用还要给其他人用.
- ServletContext域对象
场景:假设某个web服务,有两个servlet分别是servlet1和servlet2,servlet1要传参数name=zhangsan传送给servlet2,传统方法如下: servlet1端:用 ...
- Servlet的三个域对象
我们在开发javaweb项目的时候,经常会遇到jsp和Servet之间互相传值,既然有传值,就要有对象来传,这里先说Servlet的三大域对象,request,session,application他 ...
- 在Action中操作域对象
----------------------siwuxie095 在 Action 中操作域对象 1.在 Action 中可以操作的域对象主要有三个: (1)Request (2)Session (3 ...
随机推荐
- python下redis的基本操作:
1. 基本操作: >>> import redis >>> print redis.__file__ /usr/local/lib/python2.7/dist-p ...
- [Android应用]《花界》V1.0 正式版隆重发布!
http://www.cnblogs.com/qianxudetianxia/archive/2012/04/05/2433669.html 1. 软件说明(1). 花界是一款看花软件:“看花,议花, ...
- reviewboard搭建
reviewboard的搭建 系统:fedora 19 内核版本:3.9.5-301.fc19.x86_64 步骤 命令 备注 安装mysql # yum -y install mysql mysql ...
- Bridge实现
网桥原理: 传统的中继器,如HUB,是一个单纯的物理层设备,它将每一个收到的数据包,在其所有的端口上广播,由接收主机来判断这个数据包是否是给自己的. 这样,网络资源被极大的浪费掉了. 网桥之所以不同于 ...
- 在服务 ObtainData 实现的协定列表中找不到协定名称 "IMetadataExchange"。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost,以启用对该协定的支持。
第一种解决方法:最暴力的 配置去掉<endpoint address="mex" binding="mexHttpBinding" contract=&q ...
- eclipse环境NDK问题汇总
1. 配置NDK路径设置 可以在cygwin中通过vim修改,也可以在windows安装目录中修改 home\<你的用户名>\.bash_profile 文件中最后添加环境变量 NDK=/ ...
- SQL Server 2008设置 开启远程连接
SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的, 如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 1,SQL Server ...
- Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
博主实现(in Unity3d 5) used one spotlight 史克威尔效果展示(夜光引擎?) 博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96 http:// ...
- HDOJ/HDU 2565 放大的X(分段思考~)
Problem Description 请你编程画一个放大的'X'. 如3*3的'X'应如下所示: X X XX X5*5的'X'如下所示:X X X X X X XX X Input 输入数据第一行 ...
- UVA 10652 Board Wrapping(凸包)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32286 [思路] 凸包 根据角度与中心点求出长方形所有点来,然后就 ...