3-3-ServletContext接口
一、介绍
当Servlet容器启动时,会为每个Web应用创建一个唯一的ServletContext对象代表当前Web应用,该对象不仅封装了当前Web应用的所有信息,而且实现了多个Servlet之间数据的共享。
二、作用
1.获取Web应用程序的初始化参数
a.在web.xml的根元素下配置初始化参数
<context-param> <param-name>companyName</param-name><param-value>itcast</param-value>
</context-param>
<context-param> <param-name>address</param-name> <param-value>beijing</param-value>
</context-param>
b.配置Servlet
<servlet> <servlet-name>TestServlet03</servlet-name> <servlet-class>cn.itcast.servlet.TestServlet03</servlet-class>
</servlet>
<servlet-mapping> <servlet-name>TestServlet03</servlet-name> <url-pattern>/TestServlet03</url-pattern>
</servlet-mapping>
c.创建Servlet,读取参数
public class TestServlet03 extends HttpServlet {private static final long serialVersionUID = -5118888737164357097L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {PrintWriter out = response.getWriter();// 得到ServletContext对象ServletContext context = this.getServletContext();// 得到包含所有初始化参数名的Enumeration对象Enumeration<String> paramNames = context.getInitParameterNames();// 遍历所有的初始化参数名,得到相应的参数值,打印到控制台out.println("all the paramName and paramValue are following:");// 遍历所有的初始化参数名,得到相应的参数值并打印while (paramNames.hasMoreElements()) {String name = paramNames.nextElement();String value = context.getInitParameter(name);out.println(name + ": " + value);out.println("<br>");}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}
}
d.启动tomcat
http://localhost:8080/chapter03/TestServlet03
2.实现多个servlet对象之间共享数据
ServletContext对象就是域对象:域对象在一定范围内能存值和取值。
由于一个Web应用中的所有Servlet共享同一个ServletContext对象,因此ServletContext对象的域属性可以被该Web应用中的所有Servlet访问。在ServletContext接口中定义了分别用于增加、删除、设置ServletContext域属性的四个方法,如表所示。
创建两个Servlet
public class TestServlet04 extends HttpServlet {private static final long serialVersionUID = 8996912978637148061L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletContext context = this.getServletContext();// 通过setAttribute()方法设置属性值context.setAttribute("data", "this servlet save data");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
public class TestServlet05 extends HttpServlet {private static final long serialVersionUID = 4095782463787881243L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {PrintWriter out = response.getWriter();ServletContext context = this.getServletContext();// 通过getAttribute()方法获取属性值String data = (String) context.getAttribute("data");out.println(data);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}
http://localhost:8080/chapter03/TestServlet04
http://localhost:8080/chapter03/TestServlet05
3.读取Web应用下的资源文件
在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web资源的方法,这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应用的路径,返回关联资源文件的IO流、资源文件在文件系统的绝对路径等。表中列举了ServletContext接口中用于获取资源路径的相关方法,具体如下:
路径问题:
普通java项目:直接使用jdk编译java文件,所以说文件的路径是相对于工作空间。
比如:
Properties por = new Properties();
InputStream inStream = new FileInputStream("src/config.properties");
por.load(inStream);
String value =por.getProperty("key");
System.out.println(value);
web项目:运行在tomcat服务器上面的,所以说文件的路径是相对于tomcat服务器。
服务器端是没有src这个目录,写路径不能写src,必须相对于tomcat服务器端的路经。
案例代码1:ServletContext读取属性文件
案例代码2:ServletContext读取图片
3-3-ServletContext接口相关推荐
- 上下文对象及servletContext接口
上下文对象是web服务器上基于web应用的一个背景环境对象,上下文对象提供了一个同一web应用内不同资源间共享信息的场所. -------------------------------------- ...
- Servlet | ServletConfig接口、ServletContext接口详解
目录 一:ServletConfig接口 二:ServletContext接口 三:补充缓冲机制 一:ServletConfig接口 (1)ServletConfig是什么? javax.servle ...
- Servlet中ServletConfig接口和ServletContext接口的作用
前言: Servlet的作用: Servlet 是接口,是 JavaEE 规范之一.接口起到了规范的作用. Servlet 是 JavaWeb 三大组件之一.三大组件分别是:Servlet 程序.Fi ...
- JavaWEB ServletContext 接口详解
1.使用了ServletConfig 对象创建出来ServletContext 对象 获取ServletContext 对象的第一种方式 使用了ServletConfig 对象获取到 ServletC ...
- ServletContext接口
在Tomcat服务器中的Web的项目,也叫做Web应用程序,应用程序也是对象. 在JavaWeb开发中,使用ServletContext对象表示Web应用程序. 文章目录 ServletContext ...
- Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常
10.1 Servlet介绍 Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...
- 服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
一,响应报头 响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息 常用的响应报头 Location Content-T ...
- ServletContext 与application的异同
servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图.ServletContext实例是通过 getServletContext()方法获得的,由于H ...
- JavaWeb 入门篇(3)ServletContext 详解 具体应用
当Servlet 容器启动的时候 会为每个web应用创建一个ServletContext 对象代表当前的web应用. 在web.xml 文件中不止可以配置Servlet的初始化信息 还可以给整个web ...
- Servlet入门篇(GenericServlet 类 - HttpServlet 类 -ServletConfig 接口 - HttpServletRequest 接口……)
1.Servlet 简介 Servlet 对请求的处理和响应过程可分为以下几个步骤: (1)客户端发送请求至服务器端: (2)服务器将请求信息发送至 Servlet : (3)Servlet 生成响应 ...
最新文章
- java 判断ocx是否存在_OCX控件的注册卸载,以及判断是否注册
- Windows下基于python3使用word2vec训练中文维基百科语料(一)
- 在数据框中采样随机行
- 你的设备中缺少重要的安全和质量修复_城市排水管道三类非开挖修复技术汇总...
- (转)Silverlight数据校验之INotifyDataErrorInfo
- 用C语言实现分治方法数组的排序,C语言实现分治法实例
- 用css3制作旋转加载动画的几种方法
- pandas聚合dataframe某一列的值中的所有元素
- 第 4 章 MySQL 锁机制
- 下标随着页面链接的跳转
- QuickCHM V2.6
- GDOI2016模拟8.19数学
- windows10关闭java自动更新
- 中国智能家居企业出海,亚马逊云科技为其提供“GPS锦囊”
- Iceberg在袋鼠云的探索及实践
- Android 常用的第三方框架和组件
- python 画图效果
- egg-shell-decorators 给你的蛋蛋加个壳
- 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)
- 怎么实现ZBrush 4R7中界面视窗的快速转换
热门文章
- java中 static变量和方法到底是存在内存什么区域?
- 【java】JDK中注解的底层实现
- 95-872-060-源码-CEP-匹配事件提取
- 95-850-020-源码-心跳-JobMaster与TaskExecutor之间的心跳检测
- 【kafka】kafka 启动的时候 日志 find a corrupted index file
- 【java】我工作三年了,该懂并发了!
- 【Flink】JobManager responsible for xx lost the leadership zk变动导致重启
- Kudu 使用注意点
- Gradle 比 Maven 好为什么用的人少
- Springboot 关于日期时间格式化处理方式总结