ServletConfig对象和ServletContext对象
(1)ServletConfig:用来保存一个Servlet的配置信息的(比如 : name, class, url ... )
这些配置信息没什么大用处,我们还可以在ServletConfig中保存自己在web.xml文件中定义的数据
此时的web.xml文件片段如下:
<servlet>
<!-- 自己定义的,要保存在ServletConfig对象中的数据 -->
<init-param>
<param-name>jdbc.driver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>jdbc.user</param-name>
<param-value>yinkui</param-value>
</init-param>
...
<servlet-name>query</servlet-name>
<servlet-class>com.kettas.servlet.Query</servlet-class>
</servlet>
在Servlet中取得这些数据:
// getServletConfig方法继承自父类GenericServlet
ServletConfig sc = this.getServletConfig();
// 显然,getInitParameter方法返回的只能是字符串类型数据
String driver = sc.getInitParameter("jdbc.driver");
String user = sc.getInitParameter("jdbc.user");
注意:
1 ServletConfig对象只能从web.xml文件中获取自定义数据(字符串数据),不存在setAttribute方法去存入自定义数据。
2 在Servlet中,若要覆盖父类的init(ServletConfig config)方法,必须这么做:
public void init( ServletConfig config ){
// 覆盖之前调用父类的这个方法, 否则ServletConfig对象会丢失
// 此时this.getServletConfig()返回的是null, 那样我们就不能使用它了
super.init( config ) ;
... }
(2)ServletContext:用来保存数据的全局唯一对象,一个应用中只有一个ServletContext对象
1:通过web.xml文件,在ServletContext对象中存入数据
此时的web.xml文件片段如下所示:
<!-- 在此处写入我们要存入ServletContext对象中的数据 -->
<context-param>
<param-name>jdbc.driver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</context-param>
<context-param>
<param-name>jdbc.url</param-name>
<param-value>jdbc:oracle:thin:@192.168.0.201:1521:kettas</param-value>
</context-param>
...
<servlet>
<servlet-name>...</servlet-name>
<servlet-class>...</servlet-class>
</servlet>
取得其中的数据:String driver = servletContext.getInitParameter("jdbc.driver");
2:通过setAttribute方法,在ServletContext对象中存入数据
servletContext.setAttribute("name", data); // 两个参数分别为命名属性以及对应的数据
// 取得ServletContext对象中的数据, 参数为命名属性
// 返回的是Object对象, 故要强转
servletContext.getAttribute("name");
3:取得ServletContext对象的三种方法(this指代当前Servlet)
(1) ServletContext sc = this.getServletContext();
(2) ServletContext sc = this.getServletConfig().getServletContext();
(3) ServletContext sc = request.getSession(true).getServletContext();
ServletContext对象的一个重要方法:
InputStream is = sc.getResourceAsStream( "fileName" ) ;
fileName:使用的是虚拟目录, 不依赖于实际路径/books/ajax.pdf
最左边一个"/":web 应用的根目录
// 获得实际路径 String path = ctx.getRealPath( "/books/ajax.pdf" )
最新文章
- 基于Jenkins的环境搭建
- getMeasuredHeight() 与 getHeight() 的区别
- vs2013调试崩溃,重启电脑依旧崩溃
- jquery easyui easyui-treegrid 使用异步加载数据
- Mysql配置调优(转自阿铭论坛)
- maintenance ShellScripts
- Github官方app的账户身份验证的实现
- 关于RESTful接口api的设计
- 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法
- 通过Azure Powershell获取asm及arm虚拟机的配置信息
- iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?
- 微信小程序布局
- 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交
- rviz初接触
- 软件工程-CMM与CMMI
- [Java in NetBeans] Lesson 15. Sorting and Searching.
- 201621123018《java程序设计》第12周作业总结
- 将Sql查询语句获取的数据插入到List列表里面
- XSS 跨站脚本攻击(Cross Site Scripting)
- 如何在magento添加推荐分类
热门文章
- 连接mysql提示Establishing SSL connection without server&#39;s identity verification is not recommended错误
- iOS6下实现滑动返回
- Hive笔记之collect_list/collect_set(列转行)
- 网络流最大流(拆点)(附带kuangbin最大流模板)(目测这个题有bug)
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- python(13)多线程:线程池,threading
- go 匿名函数和闭包
- Linux机器如何在公司内网配置代理
- Oracle和MySQL的高可用方案对比【转】
- Failed to load class ";org.slf4j.impl.StaticLoggerBinder";