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()的更多相关文章

  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. Spring中@Transactional事务回滚

    转载: Spring中@Transactional事务回滚 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部 ...

  2. viewpager切换耗时控制

    原文地址https://my.oschina.net/javalover/blog/179003 public class FixedSpeedScroller extends Scroller { ...

  3. 湖南大学ACM程序设计新生杯大赛(同步赛)I - Piglet treasure hunt Series 1

    题目描述 Once there was a pig, which was very fond of treasure hunting. The treasure hunt is risky, and ...

  4. 爱奇艺全国高校算法大赛初赛C

    区间$dp$. 倒着考虑这件事件,肯定有最后一个取走的数字,假设是$a[k]$,那么最后一次取走的价值肯定是$a[0]*a[k]*a[n+1]$,之前取走的价值和为$[1,k-1]$的价值加上$[k+ ...

  5. python笔记五:IO与文件

    1.python IO:  Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘:  1)raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串  2 ...

  6. 5分钟掌握智联招聘网站爬取并保存到MongoDB数据库

    前言 本次主题分两篇文章来介绍: 一.数据采集 二.数据分析 第一篇先来介绍数据采集,即用python爬取网站数据. 1 运行环境和python库 先说下运行环境: python3.5 windows ...

  7. maven-surefire-plugin插件

    https://sq.163yun.com/blog/article/173632756223238144 目前很多项目组的测试代码工程都是采用MAVEN+TESTNG的方式构造的. 因此测试代码pr ...

  8. sql:将字符类型字段转换成数字并排序

    使用cast 函数可以把字符类型字段(数学形式)转换为数字 比如 AND m.nfrc_meeting_no=? ORDER BY cast(m.BOOTH AS INT) ASC "; 结 ...

  9. [BZOJ4556][TJOI2016&&HEOI2016]字符串(二分答案+后缀数组+RMQ+主席树)

    4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1360  Solved: 545[S ...

  10. 在Ubuntu下编译hadoop2.5.x

    在Ubuntu下编译hadoop2.5.x 参考博客:http://www.aboutyun.com/thread-8130-1-1.html 1 下载hadoop源码: (1) http://www ...