(15)ServletConfig对象详解
1,作用
主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)
2,创建时机和对象的获取
创建时机: 在创建完servlet对象之后,在调用init方法之前创建。对象的创建是系统完成的。
得到对象: 直接从Servlet有参数的init方法中得到。
3,servlet的初始化参数配置
每个servlet类和url映射都可以配置对应的初始化参数,初始化参数在web.xml文件中配置。
配置有两种方式,直接操作web.xml文件 或者 在描述中配置。
a,直接操作web.xml文件
<servlet>
<description>Register</description>
<display-name>Register</display-name>
<servlet-name>registerServlet</servlet-name>
<servlet-class>servlets.user.registerServlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>project</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>yang</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>registerServlet</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
其中的<init-param>标签就是配置servlet初始化参数的。
b,在web.xml的design中配置
4,ServletConfig对象的获取
a,从Servlet带参数的init方法中获取
public class registerServlet extends HttpServlet { private static final long serialVersionUID = 1L;
private ServletConfig config = null; public void init(ServletConfig config) throws ServletException{
this.config = config;
super.init();
}
b,从Servlet对象获取
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.config = this.getServletConfig();
this.config = getServletConfig();
System.out.println(config.getInitParameter("name"));
// doPost(request, response);
}
注意,两种方式不要一起用,不要既在init方法中获取ServletConfig对象,又通过getServletConfig()方法获取,否则会报错:
java.lang.NullPointerException
servlets.user.registerServlet.doGet(registerServlet.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
因为已经通过init方法获取到ServletConfig对象了,这样 getServletConfig() 方法就获取不到对象了。
5,常用接口方法
a,获取Servlet名称
getServletConfig().getServletName()
b,获取初始化参数名列表
getServletConfig().getInitParameterNames() 这里返回的是枚举对象
c,获取初始化参数值
getServletConfig().getInitParameter(initParaName)
d,返回上下文对象
getServletConfig().getServletContext()
接口使用代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(getServletConfig().getServletName());
Enumeration<String> enumeration = getServletConfig().getInitParameterNames();
while (enumeration.hasMoreElements()) {
String initParaName = (String) enumeration.nextElement();
System.out.println(getServletConfig().getInitParameter(initParaName));
}
System.out.println(getServletConfig().getServletContext());
// doPost(request, response);
}
console打印日志
egisterServlet
project
yang
org.apache.catalina.core.ApplicationContextFacade@994c146
(15)ServletConfig对象详解的更多相关文章
- ServletConfig对象详解
在Servlet 的配置文件中,可以用一个或多个<init-param>标签为servlet配置一些初始化参数. 当servlet配置了初始化参数之后,web容器在创建servlet实例对 ...
- jvm源码解读--15 oop对象详解
(gdb) p obj $15 = (oopDesc *) 0xf3885d08 (gdb) p * obj $16 = { _mark = 0x70dea4e01, _metadata = { _k ...
- mvc-servlet---ServletConfig与ServletContext对象详解(转载)
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- django中request对象详解(转载)
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
- (转)javascript中event对象详解
原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解 博客分类: javaScript JavaScriptCS ...
- Servlet、ServletContext与ServletConfig的详解及区别
Servlet.ServletContext与ServletConfig的详解及区别 一.Servlet详解 Servlet是一个interface,全局限定名:javax.servlet.Servl ...
- jQuery的deferred对象详解
jQuery的deferred对象详解请猛击下面的链接 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...
- Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697
详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...
随机推荐
- 【HDU 5934】Bomb(强连通缩点)
Problem Description There are N bombs needing exploding. Each bomb has three attributes: exploding r ...
- BigTable
Bigtable发布于2006年,启发了无数的NoSQL数据库,比如:Cassandra.HBase等等. Cassandra架构中有一半是模仿Bigtable,包括了数据模型.SSTables以及提 ...
- 【贪心+博弈】C. Naming Company
http://codeforces.com/contest/794/problem/C 题意:A,B两人各有长度为n的字符串,轮流向空字符串C中放字母,A尽可能让字符串字典序小,B尽可能让字符串字典序 ...
- Scrapy的log日志功能
Logging Scrapy提供了log功能,可以通过 logging 模块使用 可以修改配置文件settings.py,任意位置添加下面两行 LOG_FILE = "mySpider.lo ...
- sencha architect开发sencha touch应用注意事项
以下说明文字针对sencha architect v2.2.2 一.无限期试用 1. 下载地址: http://www.sencha.com/products/architect/download/ ...
- 尽量写出大家都能看懂的ReactJS入门教程
个人感觉ReactJS相比于传统的JS框架还是挺有意思的,主要是它将JS代码和HTML代码完美的结合在了一起,有点jsp把java代码和html混在一起写的意思?但是它通过组件的形式实现了代码可复用, ...
- equals() 和 hashCode()
equals() 和 hashCode()这两个方法在java.lang.Object中,所有的类都可以继承这两个方法: 但是,这两个方法在Object类中的实现一般没什么用,所以你通常需要自己重载这 ...
- Treasure Hunt--poj1066(最短路加判断线段的关系)
http://poj.org/problem?id=1066 题目大意:有n条线段 他们都在这个房间里 最后有一个点代表起始位置 现在想通过墙出去 他只能爆破每个房间的中点的门 问最少的门通 ...
- 学习swift从青铜到王者之swift属性09
1.结构体常量和类常量的存储属性 let p1 = Person1() //p1.age = 88 不允许修改 //p11.name = "yhx1" 不允许修改 var p11 ...
- 【python】urllib2
urllib2.urlopen(url[, data][, timeout]) 请求url,获得请求数据,url参数可以是个String,也可以是个Request参数 没有data参数时为GET请求, ...