(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" )

最新文章

  1. 基于Jenkins的环境搭建
  2. getMeasuredHeight() 与 getHeight() 的区别
  3. vs2013调试崩溃,重启电脑依旧崩溃
  4. jquery easyui easyui-treegrid 使用异步加载数据
  5. Mysql配置调优(转自阿铭论坛)
  6. maintenance ShellScripts
  7. Github官方app的账户身份验证的实现
  8. 关于RESTful接口api的设计
  9. 利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法
  10. 通过Azure Powershell获取asm及arm虚拟机的配置信息
  11. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?
  12. 微信小程序布局
  13. 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交
  14. rviz初接触
  15. 软件工程-CMM与CMMI
  16. [Java in NetBeans] Lesson 15. Sorting and Searching.
  17. 201621123018《java程序设计》第12周作业总结
  18. 将Sql查询语句获取的数据插入到List列表里面
  19. XSS 跨站脚本攻击(Cross Site Scripting)
  20. 如何在magento添加推荐分类

热门文章

  1. 连接mysql提示Establishing SSL connection without server&#39;s identity verification is not recommended错误
  2. iOS6下实现滑动返回
  3. Hive笔记之collect_list/collect_set(列转行)
  4. 网络流最大流(拆点)(附带kuangbin最大流模板)(目测这个题有bug)
  5. 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
  6. python(13)多线程:线程池,threading
  7. go 匿名函数和闭包
  8. Linux机器如何在公司内网配置代理
  9. Oracle和MySQL的高可用方案对比【转】
  10. Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;