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. Python编程举例-装饰器

    装饰器的通常用途是扩展已定义好的函数的功能 一个浅显的装饰器编程例子 #装饰器函数 def outer(fun): def wrapper(): #添加新的功能 print('验证') fun() r ...

  2. 【记录】mysql 5.7.20安装 出现...mysql-5.7.20-winx64\data\is_writable’ Errcode: 2 - No such file or directory

    新到一家公司,安装mysql5.7.20时候出现一个问题(安装步骤可以参考这个): ...mysql-5.7.20-winx64\data\is_writable’ Errcode: 2 - No s ...

  3. Java常用工具类之发送邮件

    package com.csice.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...

  4. Docker应用系列(五)| 构建Mongodb服务器

    本示例基于Centos 7,假设目前使用的账号为release,拥有sudo权限. 由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置. 主机上服务安装步 ...

  5. 切换java版本

    First, clean your project: Project > Clean If that doesn't fix things... Second check your projec ...

  6. PowerBuilder连接数据库

    什么是PowerBuilder(后面简称PB)? 这是个奇怪的问题,说实话,在这次毕业设计之前,我也不知道什么是PowerBulider(当然,不排除我见识短浅).百度百科是这样解释的:"P ...

  7. BZOJ1030 [JSOI2007]文本生成器(AC自动机)

    做到了AC自动机的题目,复习了一下AC自动机,学习了黄学长代码,这个题呢,我们可以模拟在AC自动机上的操作,dp数组f[i][j]表示前i个字符,我们在AC自动机上处在j号节点的方案数. 我们可以计算 ...

  8. [HNOI2012]集合选数 --- 状压DP

    [HNOI2012]集合选数 题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出\({1,2,3,4,5}\)的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x ...

  9. HDU 6118 度度熊的交易计划(费用流)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6118 [题目大意] 给出一张无向边权图,每个点最多可以生产b[i]商品,每件代价为a[i], 每个 ...

  10. MySQL注射绕过技巧(三)

    在测试一次注入的时候发现过滤了逗号 所以找到这个思路 第一次遇到的时候是看key哥挖洞  遇到后就想记录下来 正文 过滤了逗号  利用join来逐步查询 select*from(select 1)a ...