作用:
* 获取Servlet的配置信息
* 获取ServletContext对象
*主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)
接收ServletConfig对象
创建时机: 在创建完servlet对象之后,在调用init方法之前创建。
得到对象: 直接从有参数的init方法中得到!!!
初始化参数配置:
<servlet> <servlet-name>ConfigDemo</servlet-name> <servlet-class>com.loaderman.ConfigDemo</servlet-class> <!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 --> <init-param> <param-name>path</param-name> <param-value>e:/b.txt</param-value> </init-param> </servlet>
注意: servlet的参数只能由当前的这个sevlet获取!!!!
ServletConfig的API:
java.lang.String getInitParameter(java.lang.String name) 根据参数名获取参数值
java.util.Enumeration getInitParameterNames() 获取所有参数
ServletContext getServletContext() 得到servlet上下文对象
java.lang.String getServletName() 得到servlet的名称
示例代码:
package com.loaderman.demo; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=utf-8"); /** * 读取servlet的初始参数 */ String path = this.getServletConfig().getInitParameter("path"); File file = new File(path); //读取内容 BufferedReader br = new BufferedReader(new FileReader(file)); String str = null; while( (str=br.readLine())!=null ){ System.out.println(str); } //查询当前servlet的所有初始化参数 Enumeration<String> enums = this.getServletConfig().getInitParameterNames(); while(enums.hasMoreElements()){ String paramName = enums.nextElement(); String paramValue = this.getServletConfig().getInitParameter(paramName); System.out.println(paramName+"="+paramValue); } //得到servlet的名称 String servletName = this.getServletConfig().getServletName(); System.out.println(servletName); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- servlet的配置 --> <servlet> <!-- servlet的内部名称,自定义。尽量有意义 --> <servlet-name>mTestServlet</servlet-name> <!-- servlet的类全名: 包名+简单类名 --> <servlet-class>com.loaderman.demo.TestServlet</servlet-class> <!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 --> <init-param> <param-name>path</param-name> <param-value>d:/b.txt</param-value> </init-param> <init-param> <param-name>BBB</param-name> <param-value>BBB's value</param-value> </init-param> <init-param> <param-name>CCCC</param-name> <param-value>CCCC's value</param-value> </init-param> </servlet> <!-- servlet的映射配置 --> <servlet-mapping> <!-- servlet的内部名称,一定要和上面的内部名称保持一致!! --> <servlet-name>mTestServlet</servlet-name> <!-- servlet的映射路径(访问servlet的名称) --> <url-pattern>/demotest</url-pattern> </servlet-mapping> </web-app>
运行日志如下:
测试学习中.. path=d:/b.txt BBB=BBB's value CCCC=CCCC's value mTestServlet