Servlet(3)ServletConfig接口的介绍(获取web.xml中某个Servlet中的初始配置参数)

来源:互联网 发布:数据库客户端如何使用 编辑:程序博客网 时间:2024/06/01 10:50

什么是ServletConfig?

当web容器在创建servlet实例对象时,可以给每一个servlet设置初始化信息,而这些初始化信息会被自动封装到ServletConfig中。

当在调用servletinit方法时,会将ServletConfig对象传递给servlet。因此通过ServletConfig对象就可以得到当前servlet的初始化参数信息。


为什么要设置初始化信息?

在实际开发中,有一些东西不适合在servlet程序中写死,这类数据就可以通过配置方式配给servlet,如:

servlet采用哪个编码表,连接什么数据库等


原DemoServlet.java在web.xml中的相关配置为:

<servlet></servlet>

<servlet-mapping></servlet-mapping>

上边两个是一组,不能缺少!


<servlet>    <servlet-name>demo</servlet-name>    <servlet-class>cn.flying.servlet.DemoServelt</servlet-class></servlet><servlet-mapping>    <servlet-name>demo</servlet-name>    <url-pattern>/demo</url-pattern> </servlet-mapping>

如何设置初始化信息?(写在某个Sevlet的web.xml中对应的配置中)

直接在web.xml中的servlet标签中进行配置(设置初始化信息),(带注释的,方便理解)如下:

<servlet>    <servlet-name>demo</servlet-name>    <servlet-class>cn.flying.servlet.DemoServelt</servlet-class>    <!-- 为该servlet设置初始化信息:以key和value的形式存储数据 -->    <init-param>    <!-- 设置初始化信息的key -->    <param-name>name</param-name>    <!-- 设置初始化信息的value -->    <param-value>张三</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>demo</servlet-name>    <url-pattern>/demo</url-pattern>  </servlet-mapping>

不要注释(注意与原来的对比一下):

<servlet>    <servlet-name>demo</servlet-name>    <servlet-class>cn.flying.servlet.DemoServelt</servlet-class>    <init-param>    <param-name>name</param-name>    <param-value>张三</param-value>    </init-param></servlet><servlet-mapping>    <servlet-name>demo</servlet-name>    <url-pattern>/demo</url-pattern> </servlet-mapping>

如何获取初始化信息?

 

获取初始化信息的常用方法:

1、getInitParameter(String name):通过key获取value值(适合单个key和value,如有n个,需要重复n遍部分代码)

DemoServlet.java完整代码如下:

package com.flying.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DemoServlet extends HttpServlet {protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {ServletConfig servletConfig = this.getServletConfig();String name = servletConfig.getInitParameter("name");System.out.println("name的值是:"+name);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

1 把项目/工程(servlet)发布到到tomcat中启动

2 在地址栏中输入:http://localhost:8080/servlet/hello  回车确认


控制台显示:

name的值是:张三


2、getInitParameterNames():获取所有初始化信息的key,返回的是一个枚举,然后可以通过遍历枚举获取所有的key,在通过key来获取value。

DemoServlet.java完整代码如下:

package com.flying.servlet;import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DemoServlet extends HttpServlet {protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {ServletConfig servletConfig = this.getServletConfig();Enumeration<String> names = this.getInitParameterNames();while (names.hasMoreElements()) {String name = (String) names.nextElement();//此时name(就相当于key)的值是web.xml中的name字符串,不是:张三System.out.println(name+"的值是:"+servletConfig.getInitParameter(name));}}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}



1 把项目/工程(servlet)重新启动

2 在地址栏中输入:http://localhost:8080/servlet/hello  回车确认

【结果和上面的一样】

控制台显示:

name的值是:张三


【注意】

若web.xml中配置了多个初始化信息,采用2、getInitParameterNames()方法

如下:

<servlet>    <servlet-name>hello</servlet-name>    <servlet-class>com.flying.servlet.DemoServlet</servlet-class>    <init-param><param-name>name</param-name>    <param-value>张三</param-value>    </init-param>    <init-param><param-name>name2</param-name>    <param-value>李四 </param-value>    </init-param></servlet><servlet-mapping>    <servlet-name>hello</servlet-name>    <url-pattern>/hello</url-pattern></servlet-mapping>


1 把项目/工程(servlet)重新启动

2 在地址栏中输入:http://localhost:8080/servlet/hello  回车确认


控制台显示:

name的值是:张三

name2的值是:李四



 
阅读全文
0 0
原创粉丝点击