JavaWeb学习笔记:ServletConfig()和ServletContext()
ServletConfig()和ServletContext()
1.ServletConfig()
ServletConfig是一个接口,它由server提供商来实现。
ServletConfig封装了Servlet的配置信息,而且能够获取ServletContext对象。
Servlet容器在初始化servlet的时候会初始化一个servletConfig对象,这个对象在不论什么可訪问的client都是有效的。可是,需注意的是,该对象仅仅能在本servlet中应用,不能在其它servlet中訪问。
基本的方法:
- public ServletContext getServletContext(); //暂不写,放在ServletContext中整理
- public String getInitParameter(String name); //获取指定參数名的初始化參数
- public Enumeration< String > getInitParameterNames(); //获取參数名组成的 Enumeration 对象
- public String getServletName(); //使用比較少
获取配置信息
怎样配置
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.buaa.zhao.HelloServlet</servlet-class>
<!-- 配置 Serlvet 的初始化參数。 且节点必须在 load-on-startup 节点的前面 -->
<init-param>
<!-- 參数名 -->
<param-name>user</param-name>
!-- 參数值 -->
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>12345</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
</servlet>
获取配置信息
public void init(ServletConfig servletConfig) throws ServletException {
String user = servletConfig.getInitParameter("user");
//输出root
System.out.println(user);
System.out.println("--------------------------");
Enumeration<String> names = servletConfig.getInitParameterNames();
//输出:
//user: root
//password: 12345
while(names.hasMoreElements()){
String name = names.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println(name + ": " + value);
}
}
2.ServletContext()
能够觉得 SerlvetContext 是当前 WEB 应用的一个大管家. 能够从中获取到当前 WEB 应用的各个方面的信息
基本的方法
- public String getInitParameter(String name); //获取指定參数名的初始化參数
- public Enumeration< String > getInitParameterNames(); //获取參数名组成的 Enumeration 对象
- public String getRealPath(String path);
- public String getContextPath();
- public InputStream getResourceAsStream(String path);
获取配置信息
ServletContext实例能够通过 serlvetConfig.getServletContext()方法获得的.
该对象代表当前 WEB 应用: 能够觉得 SerlvetContext 是当前 WEB 应用的一个大管家. 能够从中获取到当前 WEB 应用的各个方面的信息。
怎样配置
<!-- 配置当前 WEB 应用的初始化參数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:localhost:///test</param-value>
</context-param>
获取配置信息
public void init(ServletConfig servletConfig) throws ServletException {
//获取ServletContext对象
ServletContext servletContext = servletConfig.getServletContext();
String driver = servletContext.getInitParameter("driver");
//输出:driver: com.mysql.jdbc.Driver
System.out.println("driver: " + driver);
Enumeration<String> nameContext = servletContext.getInitParameterNames();
//输出
//name: driver
//name: jdbcUrl
while(nameContext.hasMoreElements()) {
String name = nameContext.nextElement();
System.out.println("name: " + name);
}
}
获取当前Web应用的某个文件部署在在server上的绝对路径
须要通过方法public String getRealPath(String path);来获取。
代码:
String realPath = servletContext.getRealPath("/zhaoTest");
System.out.println(realPath);
输出结果:
D:\workspace\sts\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\***\zhaoTest.xml
获取当前 WEB 应用的名称
须要通过方法getContextPath();来获取。
代码:
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
获取当前web应用的而某一个文件相应的输入流
通过getResourceAsStream(String path)获取。path 的 / 为当前 WEB 应用的根文件夹。
有两种方法能够获取到。
代码
try {
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("jdbc.properties");
System.out.println("1. " + is);
pros.load(is);
System.out.println(pros.getProperty("name"));
} catch (Exception e) {
e.printStackTrace();
}
pros = new Properties();
try {
//注意: / 为当前 WEB 应用的根文件夹。
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println("2. " + is2);
pros.load(is2);
System.out.println(pros.getProperty("name"));
} catch (Exception e) {
e.printStackTrace();
}
结果
1. java.io.BufferedInputStream@15d442ac
2. java.io.FileInputStream@22653566
ServletConfig()和ServletContext()的差别
- 作用范围不同:ServletContext的參数能够为全部的Servlet所获取,ServletConfig仅仅能由当前Servlet所获取。
也就是说他们的差别在于,所填写的配置的信息是想让一个Servlet用还是多个Servlet用。
- 配置不同:ServletContext是在两个元素间配置,ServletConfig是在元素之间的间配置。
JavaWeb学习笔记:ServletConfig()和ServletContext()的更多相关文章
- java学习笔记—ServletConfig、ServletContext接口(13)
ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet> ...
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源
Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...
- [原创]java WEB学习笔记06:ServletContext接口
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- JavaWeb学习笔记之Servlet(一)
1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Serv ...
- 【JAVAWEB学习笔记】06_jQuery基础
接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...
- JavaWeb学习笔记(六)—— Cookie&Session
一.会话技术简介 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程 ...
- javaweb学习笔记(二)
一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...
随机推荐
- 解决centOS7的IP为127.0.0.1,无法用Xshll链接问题
对于linux不熟悉的我, 安装完centOS7后好多坑,走一步卡一步,记得之前安装其他版本没这么多事.安装完后用ifconfig查看IP,竟然是127.0.0.1,这我就不知道怎么用Xshell链接 ...
- EL和JSTL的关系
JSTL与EL的关系:EL的功能是有限的,去集合只能取特定的某一个元素,如果遍历或循环就不行了,或者添加一些条件分支判断也不行,或做一些格式化,比如日期的格式化,数字的格式化,也不行,所以要做这些功能 ...
- JSP文件管理后门工具jsp-file-browser
JSP文件管理后门工具jsp-file-browser 在网页后门中,快速浏览服务器文件非常重要.为此,Kali Linux新增了一款JSP后门工具jsp-file-browser.该工具提供所有 ...
- openstack首页默认跳转
在/var/www/html新建index.html <html> <head> <meta http-equiv="Content-Language" ...
- pool创建多进程
这中方式用的比较多,毕竟要控制并发数量,不可能不限制并发数 #_*_coding:utf-8_*_ from multiprocessing import Pool import time def f ...
- code forces 505A
Mr. Kitayuta's Gift Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64 ...
- python虚拟环境virtualenv下安装MySQL-python
1.先在windows安装:https://github.com/konglingxi/mysqldb_for_python27 2.按照提示将python主环境中的mysqldb相关文件及文件夹移到 ...
- 【BZOJ 4662】 4662: Snow (线段树+并查集)
4662: Snow Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 136 Solved: 47 Description 2333年的某一天,临冬突 ...
- jni java C/C++ 相互调用
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha java 中 声明 一个 native 方法 用javah命令 生成 包含 nativ ...
- 51nod1203 JZPLCM 线段树 + 扫描线
不算很难的一道题 原题的数据虽然很小,但是我们不能欺负它,我们就要当$S[i] \leqslant 10^9$来做这题 最小公倍数 = 所有的质因数取可能的最大幂相乘 对于$> \sqrt S$ ...