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. ref:ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3)

    ThinkPHP Builder.php SQL注入漏洞(<= 3.2.3) ref:https://www.jianshu.com/p/18d06277161e TimeSHU 2018.04 ...

  2. 从Mybatis的视角去看Bean的初始化流程

    不涉及Spring完整的启动流程,仅仅从Mybatis的视角去分析几个关键的方法,找到Mybatis是如何通过这几个扩展点植入进去的,反过来看Spring是如何设计,埋下这些伏笔,实现其可扩展性. s ...

  3. openstack多region配置

    实验 A机器 10.64.8.171     RegionOne B机器 10.64.8.142     RegionTwo         Keytson(这个组件随便放在哪台都可以) openst ...

  4. struct模块-黏包的解决方法

    黏包的解决方案 解决方案一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死 ...

  5. os.path.dirname(__file__)使用

    os.path.dirname(__file__)使用 该测试脚本所在的位置:D:\第1层\第2层\第3层\第4层\第5层\test11.py test11.py import os #该文件所在位置 ...

  6. 「NOI2017」游戏

    「NOI2017」游戏 题目描述 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 \(A\).\(B\).\ ...

  7. BZOJ 2428 JZYZOJ1533 : [HAOI2006]均分数据 模拟退火 随机化

    http://www.lydsy.com/JudgeOnline/problem.php?id=2428 http://172.20.6.3/Problem_Show.asp?id=1533 http ...

  8. [CC-CHEFGRPH]Time to Study Graphs with Chef

    [CC-CHEFGRPH]Time to Study Graphs with Chef 题目大意: 一个有向图可以分成\(n+2(n\le10^{12})\)层,第\(0\)层和第\(n+1\)层有\ ...

  9. noip2009最优贸易

    试题描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双 ...

  10. asp.net url传值,弹窗

    一,<a>标签链接式传值 1, <a href="News_list.aspx?ClassID=<%#((DataRowView)Container.DataItem ...