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(); //使用比較少

获取配置信息

怎样配置

  1. <servlet>
  2. <servlet-name>helloServlet</servlet-name>
  3. <servlet-class>com.buaa.zhao.HelloServlet</servlet-class>
  4. <!-- 配置 Serlvet 的初始化參数。 且节点必须在 load-on-startup 节点的前面 -->
  5. <init-param>
  6. <!-- 參数名 -->
  7. <param-name>user</param-name>
  8. !-- 參数值 -->
  9. <param-value>root</param-value>
  10. </init-param>
  11. <init-param>
  12. <param-name>password</param-name>
  13. <param-value>12345</param-value>
  14. </init-param>
  15. <load-on-startup>-1</load-on-startup>
  16. </servlet>

获取配置信息

  1. public void init(ServletConfig servletConfig) throws ServletException {
  2. String user = servletConfig.getInitParameter("user");
  3. //输出root
  4. System.out.println(user);
  5. System.out.println("--------------------------");
  6. Enumeration<String> names = servletConfig.getInitParameterNames();
  7. //输出:
  8. //user: root
  9. //password: 12345
  10. while(names.hasMoreElements()){
  11. String name = names.nextElement();
  12. String value = servletConfig.getInitParameter(name);
  13. System.out.println(name + ": " + value);
  14. }
  15. }

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 应用的各个方面的信息。

怎样配置

  1. <!-- 配置当前 WEB 应用的初始化參数 -->
  2. <context-param>
  3. <param-name>driver</param-name>
  4. <param-value>com.mysql.jdbc.Driver</param-value>
  5. </context-param>
  6. <context-param>
  7. <param-name>jdbcUrl</param-name>
  8. <param-value>jdbc:localhost:///test</param-value>
  9. </context-param>

获取配置信息

  1. public void init(ServletConfig servletConfig) throws ServletException {
  2. //获取ServletContext对象
  3. ServletContext servletContext = servletConfig.getServletContext();
  4. String driver = servletContext.getInitParameter("driver");
  5. //输出:driver: com.mysql.jdbc.Driver
  6. System.out.println("driver: " + driver);
  7. Enumeration<String> nameContext = servletContext.getInitParameterNames();
  8. //输出
  9. //name: driver
  10. //name: jdbcUrl
  11. while(nameContext.hasMoreElements()) {
  12. String name = nameContext.nextElement();
  13. System.out.println("name: " + name);
  14. }
  15. }

获取当前Web应用的某个文件部署在在server上的绝对路径

须要通过方法public String getRealPath(String path);来获取。

代码:

  1. String realPath = servletContext.getRealPath("/zhaoTest");
  2. System.out.println(realPath);

输出结果:

  1. D:\workspace\sts\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\***\zhaoTest.xml

获取当前 WEB 应用的名称

须要通过方法getContextPath();来获取。

代码:

  1. String contextPath = servletContext.getContextPath();
  2. System.out.println(contextPath);

获取当前web应用的而某一个文件相应的输入流

通过getResourceAsStream(String path)获取。path 的 / 为当前 WEB 应用的根文件夹。

有两种方法能够获取到。

代码

  1. try {
  2. ClassLoader classLoader = getClass().getClassLoader();
  3. InputStream is = classLoader.getResourceAsStream("jdbc.properties");
  4. System.out.println("1. " + is);
  5. pros.load(is);
  6. System.out.println(pros.getProperty("name"));
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. }
  10. pros = new Properties();
  11. try {
  12. //注意: / 为当前 WEB 应用的根文件夹。
  13. InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
  14. System.out.println("2. " + is2);
  15. pros.load(is2);
  16. System.out.println(pros.getProperty("name"));
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }

结果

  1. 1. java.io.BufferedInputStream@15d442ac
  2. 2. java.io.FileInputStream@22653566

ServletConfig()和ServletContext()的差别

  • 作用范围不同:ServletContext的參数能够为全部的Servlet所获取,ServletConfig仅仅能由当前Servlet所获取。

    也就是说他们的差别在于,所填写的配置的信息是想让一个Servlet用还是多个Servlet用。

  • 配置不同:ServletContext是在两个元素间配置,ServletConfig是在元素之间的间配置。

JavaWeb学习笔记:ServletConfig()和ServletContext()的更多相关文章

  1. java学习笔记—ServletConfig、ServletContext接口(13)

    ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet>  ...

  2. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  3. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  4. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

  5. [原创]java WEB学习笔记06:ServletContext接口

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. JavaWeb学习笔记之Servlet(一)

    1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Serv ...

  7. 【JAVAWEB学习笔记】06_jQuery基础

    接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...

  8. JavaWeb学习笔记(六)—— Cookie&Session

    一.会话技术简介 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程 ...

  9. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

随机推荐

  1. 【.NET】学习SQLite(1)

    前沿 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存 ...

  2. QString 乱谈(3)-Qt5与中文

    原文请看:http://blog.csdn.net/dbzhang800/article/details/7542672 两个月前,简单写过QTextCodec中的setCodecForTr等终于消失 ...

  3. vue v-model 简单使用

    最近在写组件时,考虑到子组件的状态需要实时反馈给父组件,于是想起来了v-model,下面介绍一下自定义组件中的简单使用 官网介绍不是很清晰,这个默认的input事件很容易让人产生误解,其实个人建议还是 ...

  4. shell 空间利用

    root #df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda3 3.3G 1.7G 1.5G 54% /

  5. TCP的那些事-2

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解决一个很大的事,那就是要 ...

  6. C和指针之学习笔记(5)

    第10章 使用结构和指针 单链表 typedef struct NODE { struct NODE *link; int value; } Node; 插入到一个有序单链表: #include< ...

  7. 【BZOJ】2002: [Hnoi2010]Bounce 弹飞绵羊

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 14802  Solved: 7507[Subm ...

  8. js 运算符 || && 妙用

    首先出个题:如图: 假设对成长速度显示规定如下:  成长速度为5显示1个箭头:  成长速度为10显示2个箭头:  成长速度为12显示3个箭头:  成长速度为15显示4个箭头:  其他都显示都显示0个箭 ...

  9. [转]Android学习笔记:TabHost 和 FragmentTabHost

    TabHost 命名空间: android.widget.TabHost 初始化函数(必须在addTab之前调用): setup(); 包含两个子元素: 1.Tab标签容器TabWidget(@and ...

  10. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块

    D. Turtles Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/103/problem/D ...