Servlet学习之ServletConfig

ServletConfig在Servlet中扮演的角色

  • 用于加载Servlet的初始化参数,在一个web应用可以存在多个ServletConfig对象,一个Servlet对应一个ServletConfig对象。

  • 初始化参数的作用: 我们可以将一些servlet运行时需要加载常量定义在初始化参数中,当我们需要使用时,可以直接通过ServletConfig获取到这些值。

配置初始化参数

ServletConfig的配置

ServletConfig对象的获取

1、通过重写父类有参的init(ServletConfig config)方法获得,查看源码可以知道有参的init(ServletConfig config)的参数类型就是ServletConfig类型的。

//1、创建私有变量
	private ServletConfig config = null;
//2、重写init方法,从而获取ServletConfig对象
	this.config = config

2、通过继承父类(GenericServlet)的方法得到一个ServletConfig对象

//	得到ServletConfig对象
	ServletConfig config = this.getServletConfig();

ServletConfigAPI的介绍

1、String getServletName():获得是我们在web.xml中配置的中的内容,也就是返回是Servlet实例的名字。

2、String getInitParameter(String name):获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数

3、Enumeration getInitParameterNames(): 获取当前Servlet所有初始化参数的名字组成的枚举,返回值类型是:Enumeration

4、ServletContext getServletContext():获取代表当前web应用的ServletContext对象(后期会进行介绍 )

ServletConfig的代码测试

创建一个MyConfig的Servlet类,然后在web.xml中的标签下,通过标签为这个servlet配置两个初始化参数:

<servlet>
    <servlet-name>MyConfig</servlet-name>
    <servlet-class>com.syj.ServletConfig.MyConfig</servlet-class>
    <init-param>
    	<param-name>username</param-name>
    	<param-value>tom</param-value>
    </init-param>
     <init-param>
    	<param-name>password</param-name>
    	<param-value>root</param-value>
    </init-param>
    <init-param>
    	<param-name>encoding</param-name>
    	<param-value>UTF-8</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>MyConfig</servlet-name>
    <url-pattern>/myConfig</url-pattern>
  </servlet-mapping>

利用提供的API获取参数名和参数值:

public class MyConfig extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		ServletConfig config = this.getServletConfig();

		// 1、获取ServletConfig对象
		// 获取当前Servlet在web.xml配置的名称。
		// 使用的方法是:getServletName()
		String servletName = config.getServletName();
		System.out.println(servletName);

		// 根据<init-param>中<param-name>的名字获取指定的<param-value>的值
		// 使用的方法是:getInitParamter(String name)
		String pusername = config.getInitParameter("username");
		String pencoding = config.getInitParameter("encoding");
		System.out.println("getInitParameter得到encoding:"+pusername);
		System.out.println("getInitParameter得到encoding:"+pencoding);

		// 根据<init-param>获取所有的<param-name>的值返回值类型:Enumeration
		// 使用的方法是:getInitParamterNames()	
		Enumeration<String> initParameterNames = config.getInitParameterNames();
		// 遍历得到的参数名
		while (initParameterNames.hasMoreElements()) {
			String name = initParameterNames.nextElement();
			String value = config.getInitParameter(name);
			System.out.println("getInitParameterNames方法得到:"+name + ":" + value);
		}
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

ServletConfig补充

  • 每一个servlet都有自己的ServletConfig对象,也就是说它是单例的。
  • ServletConfig对象是由服务器创建的,通过Servlet中init方法传递到Servlet中。
  • ServletConfig对象表示Servlet的配置对象,我们可以通过它获取Servlet的名称与相关的初始化参数。
  • 我们可以通过ServletConfig获取 ServletContext对象。
    ServletContext config = this.getServletContext ();
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值