基本概念

  • ServletConfig用于配置Servlet的参数:在Servlet的配置文件中,可以使用一个或者是多个<init-param> 标签为Servlet配置一些初始化参数。当有些Servlet参数需要灵活可配置时,就可以用ServletConfig来实现。
  • 当配置完这些初始化参数后,Tomcat在创建Servlet实例对象时回自动的将这些参数封装到ServletConfig当中,并在调用Servlet的初始化方法时将ServletConfig对象传递给Servlet。
  • 开发人员可以通过ServletConfig对象获取当前Servlet初始化的参数信息。
  • ServletConfig 可以用来配置Servlet的编码属性/数据库连接属性/配置文件的路径,因为它是针对单个Servlet的配置,在实际开发并不经常被使用。

示例:配置FirstServletConfig的初始化参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"> <servlet>
<servlet-name>FirstServletConfig</servlet-name>
<servlet-class>servletConfig.FirstServletConfig</servlet-class>
<!-- init-param的key-value paris可以通过ServletConfig传递到Servlet中 -->
<init-param>
<param-name>testServletConfig</param-name>
<param-value>GetFirstServletConfig</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>FirstServletConfig</servlet-name>
<url-pattern>/FirstServletConfig</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>OverrideServletConfig</servlet-name>
<servlet-class>servletConfig.OverrideServletConfig</servlet-class>
<!-- init-param的key-value paris可以通过ServletConfig传递到Servlet中 -->
<init-param>
<param-name>OverrideServletConfig</param-name>
<param-value>OverrideServletConfig</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>OverrideServletConfig</servlet-name>
<url-pattern>/OverrideServletConfig</url-pattern>
</servlet-mapping>
</web-app>

 示例:通过 this.getServletConfig() 获取传递进来的ServletConfig对象

package servletConfig;

import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /*
* 1.在web-xml中的servlet下面配置<init-param>
* 2.获取ServletConfig对象:this.getServletConfig() 或者是申明ServletConfig config,然后重写初始化方法,直接调用config对象。(二选一,不能共存)
* 3.通过config.getInitParameter(name) 获取特定初始化参数 或者是 config.getInitParameterNames()获取所有初始化参数名
*
*/
public class FirstServletConfig extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) {
enumServletConfigInitParams();
} public void enumServletConfigInitParams() {
// 通过this.getServletConfig() 获取Tomcat传递的ServletConfig对象
Enumeration<String> initParas = this.getServletConfig().getInitParameterNames();
String name, value;
while (initParas.hasMoreElements()) {
name = initParas.nextElement();
value = this.getServletConfig().getInitParameter(name);
System.out.println("name:" + name);
System.out.println("value:" + value);
}
} }

示例:通过重载Servlet初始化方法,获取传递进来的ServletConfig对象

package servletConfig;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class OverrideServletConfig extends HttpServlet{ private ServletConfig config; public void doGet(HttpServletRequest request, HttpServletResponse response) {
getServletConfigInitParamByName();
}
public void getServletConfigInitParamByName() {
//通过输入特定的初始化参数名称获得初始化参数值
String value = this.config.getInitParameter("OverrideServletConfig");
System.out.println("value:" + value); }
//重写了Servlet的初始化方法,把服务器封装的ServletConfig传递给了当前Servlet的私有Config对象
//一旦重写了此方法,不能够再调用 this.getServletConfig()获取当前Servlet的ServletConfig对象,只能通过传递过来的私有变量config来操作。
public void init(ServletConfig config){
this.config=config;
}
}

  

JavaWeb基础: ServletConfig的更多相关文章

  1. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  2. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  3. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  4. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  5. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  6. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  7. 25天javaweb基础

    第一天(html) 表格标签,超链接标签,图片标签,排版标签,列表标签 第二天(css) 表单标签 第三天(JS) js语法 定时器(系统对象的定时器setinterval,js的定时器seTimeo ...

  8. JavaWeb基础—过滤器Filter

    一.概念 JavaWeb三大组件之一(组件都有一个特性,需要在web.xml中配置) 过滤器:会在一组资源(jsp servlet等)的前面执行,可以让请求得到目标资源,也可以终止请求,不再继续 也就 ...

  9. JavaWeb基础

    1.Servlet: Servlet是JavaWeb的3大组件之一,是把url请求转为后台处理的具体类,此类必须实现Servlet接口,一把实际使用时无须我们实现,我们直接使用JavaEE的HTTPS ...

随机推荐

  1. iOS解析JSON字符串报错Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence around character 586."

    将服务器返回的JSON string转化成字典时报错: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence ...

  2. [Android Tips] 17. Check APK Sign Info

    $ jarsigner -verify -verbose -certs <apk file path> 查看 keystore $ keytool -list -keystore debu ...

  3. 成都开发一个app大概好多钱?

    目前,移动APP已成为很多小企业业务销售的新渠道之一,于是问题来了,一般想到要开发一个自己的app,就想问:开发一个app好多钱?去百度.360.搜狗等等平台去找相关的app开发公司咨询或者问问朋友有 ...

  4. IIS7 应用程序池设置成 经典 v2.0

    HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipe ...

  5. JSON.parse()和JSON.stringify()使用介绍

    parse用于从一个字符串中解析出json对象,如 ? 1 var str = '{"name":"huangxiaojian","age" ...

  6. javascript的类、委托、事件

    javascript中的类: javascript中的类 );         p2.show();                  //注:Javascript中没有真正的方法重载 看起来很简单吧 ...

  7. android的listview的详细用法

    listview是android开发中的一个极其重要的控件.所以,要学会android,如果这个不会,基本是不会android的. 这里按照几个步骤介绍这个控件的使用. 1. 使用API中ArrayA ...

  8. 开源.net 混淆器ConfuserEx介绍

    今天给大家介绍一个开源.net混淆器——ConfuserEx http://yck1509.github.io/ConfuserEx/ 由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotf ...

  9. 爷爷辈儿的AX

    你是否见过第一版的AXAPTA? @FlemmingLR 晒出了他收藏的老光盘. 这就是爷爷辈儿的AX——AXAPTA Version 1.0.

  10. iOS性能优化:Instruments

    检测内存泄露:Instruments中的Leaks 前言 如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄 ...