ServletConfig对象的使用

作用:

  * 获取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

 

posted on 2017-02-19 12:36  LoaderMan  阅读(605)  评论(0编辑  收藏  举报

导航