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 ...
随机推荐
- Pycharm2019版官方版本激活码,无需破解
AHD9079DKZ-eyJsaWNlbnNlSWQiOiJBSEQ5MDc5REtaIiwibGljZW5zZWVOYW1lIjoiSmV0IEdyb3VwcyIsImFzc2lnbmVlTmFtZ ...
- ASP.NET Core 2.1 JWT Token 使用 (二) - 简书
原文:ASP.NET Core 2.1 JWT Token 使用 (二) - 简书 接上文,https://www.jianshu.com/p/c5f9ea3b4b65 ASP.NET Core 2. ...
- 最新版WinRAR5.61去广告代码教程分享(仅供学习交流)
最新版WinRAR5.61去广告代码教程分享(仅供学习交流) 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,选择Chinese Simplified 64bit 安装即可. ...
- Linux 核心编译与管理
一般情况下,不需要重新编译核心,除非以下特有的用途 [root@localhost ~]# wget ftp://ftp.twaren.net/pub/Unix/Kernel/linux/kernel ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 I J
I. query 题意:给出n的一个排列,有m个询问[l,r],询问[l,r]直接有倍数关系的pair个数. 解法:比赛完之后听说是原题,但是我没做过呀,做题太少了qwq.首先因为数字是1-n的,所以 ...
- 使用ubuntu的一些操作笔记20191203
前言 环境: virtualbox + Ubuntu 16.04 情况: 可以进入虚拟机中Ubuntu系统的桌面,但是外部可以访问到 ssh,输入正确的用户名和密码无法登录 无法正常启动 Apache ...
- webpack 学习4 使用loader 以及常用的一些loader
webpack本身只支持处理JavaScript,其他的文件,如css img less是不识别的,所以才会有loader这个东西,它就是可以使webpack能够处理其他非js文件的拓展程序 首先我们 ...
- postgresql中rank() over, dense_rank(), row_number() 的用法和区别
- cocos2D-X not config ndk path
{ 双击击那个error,那个路径就加上了 File = >local.properties }
- 【InnoDB】插入缓存,两次写,自适应hash索引
InnoDB存储引擎的关键特性包括插入缓冲.两次写(double write).自适应哈希索引(adaptive hash index).这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性. ...