servlet的ServletContext接口
ServletContext
Servlet 上下文
每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一个
web.xml
<servlet>
<servlet-name>hello2</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet2</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>hello2</servlet-name>
<url-pattern>/h2</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.qf.servlet.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/h3</url-pattern>
</servlet-mapping>
servlet类
public class HelloServlet2 extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("helloServlet2:"+getServletContext());
}
}
-------------------------------------------------------------
public class HelloServlet3 extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("helloServlet3:"+getServletContext());
//testServletConfig();
}
}
浏览器先后访问url(http://localhost:8080/HelloServlet/h2、http://localhost:8080/HelloServlet/h3),查看console输出
helloServlet2:org.apache.catalina.core.ApplicationContextFacade@4b020c18
helloServlet3:org.apache.catalina.core.ApplicationContextFacade@4b020c18
所以两个servlet获取的是同一个ServletContext对象
ServletContext对象的获取
ServletContext context = getServletContext();
ServletContext的作用
获取全局配置参数
web.xml配置
<context-param>
<param-name>name</param-name>
<param-value>wxf</param-value>
</context-param>
<context-param>
<param-name>age</param-name>
<param-value>21</param-value>
</context-param>
servlet代码
public class HelloServlet2 extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = getServletContext();
Enumeration<String> names = context.getInitParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
System.out.println(name+"==="+context.getInitParameter(name));
}
}
}
console输出
name===wxf
age===21
获取web工程中的资源(webContent目录下的资源)
config.properties
name=zhangsan
age=123
servlet类
public class HelloServlet2 extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = getServletContext(); //1.获取资源所在的绝对路径位置
//这里得到的是项目在tomcat里面的根目录
String path = context.getRealPath("");
System.out.println("path==="+path);
//这里得到的是项目在tomcat里面的根目录
String path2 = context.getRealPath("config.properties");
System.out.println("path2==="+path2);
System.out.println("-------------------------"); //2.getResourceAsStream 获取资源 流对象 相对路径
InputStream stream = context.getResourceAsStream("config.properties");
Properties prop = new Properties();
prop.load(stream);
String name = prop.getProperty("name");
System.out.println("name==="+name);
}
}
console输出
path===F:\eclipse\workspace\develop_study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\HelloServlet
path2===F:\eclipse\workspace\develop_study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\HelloServlet\config.properties
-------------------------
name===zhangsan
注:
- 通过classloader去获取web工程下的资源的方式:this.getClass().getClassLoader().getResource("../../config.properties")
- src对应的是/WEB-INF/classes,如果想要使用ServletContext获取src目录下的文件可以使用context.getResourceAsStream("/WEB-INF/classes/config.properties")
存取数据,servlet间共享数据 域对象
ServletContext context = getServletContext();
context.setAttribute("name", "qf");
System.out.println("name==="+context.getAttribute("name"));
console输出
name===qf
servlet的ServletContext接口的更多相关文章
- Servlet笔记4--ServletConfig接口和ServletContext接口
ServletConfig接口: ServletContext接口: 代码详解: (1)web.xml配置文件: <?xml version="1.0" encoding=& ...
- Java EE javax.servlet中的ServletContext接口
ServletContext接口 public interface ServletContext (https://docs.oracle.com/javaee/7/api/javax/servlet ...
- javaWeb学习总结(3)- Servlet总结(servlet的主要接口、类)
Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet ...
- Servlet常用的接口和类
使用接口和类的作用:Servlet也是依靠继承父类和实现接口来实现的.使用Servlet必须要引入两个包:javax.servlet和javax.servlet.http.所有的Servlet应用都是 ...
- 与servlet相关的接口
(二)与servlet相关的接口 从servlet仅有的5个方法当中,我们知道其涉及3个接口,分别是: ServletConfig ServletRequest ServletResponse 2.1 ...
- java学习笔记—ServletConfig、ServletContext接口(13)
ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet> ...
- ServletContext接口(六)
javax.servlet.ServletContext接口 ServletContext(上下文)是公用的,就是.net中的application,主要用到的就是全局set设置值,get获取值,ja ...
- SERVLET类常用接口及方法
SERVLET类常用接口及方法 2011-09-09 16:14:43 [size=xx-small]SERVLET类常用接口及方法2007年04月05日 星期四 04:46 P.M.基本类和接 ...
- JavaWeb学习——Servlet相关的接口和类
JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...
随机推荐
- 超強的Linux指令解釋網站《explainshell.com》,學Linux必備!
ExplainShell 官方網站:http://explainshell.com/ 原始碼下載:https://github.com/idank/explainshell 用瀏覽器打該explain ...
- 从Flask-Script迁移到Flask-Cli
Abstrct flask从0.11版本开始引入了click提供命令行支持,在此之前我们通常会引入Flask-Script来提供. 在<Flask web开发>这本书编写时flask0.1 ...
- [HTML知识体系]meta标签的常见用法
1.meta是什么 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定义了与文档相关联的名称 ...
- BZOJ5205 [CodePlus 2018 3 月赛]白金元首与莫斯科
传送门 emm在雅礼集训的时候听到的一道题 上来就觉得是插头dp 最后果然是轮廓线状压233 我们简化一下题意. 有一个n*m的网格,每个格子是空地或障碍物,询问把每一个空地看成障碍物的情况下,用1* ...
- boost regex expression
Boost.Regex provides three different functions to search for regular expressions 1. regex_match #inc ...
- BlueStore-先进的用户态文件系统《二》-BlueFS
https://zhuanlan.zhihu.com/p/46362124 简介 上一篇文章中,介绍了BlueStore的诞生背景.逻辑架构以及设计思想,提到了在BlueStore中元数据都是存放在R ...
- Json中判断是JSONArray还是JSONObject
聪明的人总是能想到别人会遇到的问题,提前给出解决方案. List propList = new ArrayList(); //装载数据的list JSONArray array= JSONArray. ...
- 浏览器 url 编码
1.问题的由来 : http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 2.网络标准RFC 1738做了硬性规定: 只有字母和数字[0-9 ...
- Vue项目中添加锁屏功能
0. 直接上 预览链接 Vue项目中添加锁屏功能 1. 实现思路 ( 1 ) 设置锁屏密码 ( 2 ) 密码存localStorage (本项目已经封装h5的sessionStorage和localS ...
- SqlSession(SqlSessionTemplate类) 实现Mybatis
yBatis3与spring整合之使用SqlSession(SqlSessionDaoTemplate类) ---------- 注:这是手工编写实现的方式(其实可以直接使用注入映射器的) SqlSe ...