Servlet 的 init 方法

init 方法

  什么时候被调用: init()方法只会被调用一次,是在第一次访问(or 创建) Servlet 的时候被调用,在后续的每次请求时都不会再调用 init() 方法了,
  作用: init()方法用于 Servlet 的初始化,可以简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

 Servlet 调用inti方法的时间
     -- 可以是用户第一次访问该 Servlet 时——web.xml 文件的<load-on-startup>标签
     不配置或者配置为小于零的数;
     -- 也可以指定 Servlet 在服务器第一次启动时调用 init 方法——web.xml 文件
     的<load-on-startup>标签配置为大于等于0的数。

 当用户调用一个 Servlet时,会创建一个 Servlet 实例,
 每个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或者 doPost 方法。

init() 的使用

  学习 init 方法主要是它的参数 ServletCofig 类的对象的使用。

public void init(ServletConfig config) throws ServletException {
}

设置初始参数

原始方式设置

  在 web.xml 文件中写入下面的代码。
  其中 <init-param>标签是初始参数,在一个<servlet>标签中可以存在多个 <init-param>标签,也就是说可以有多个初始参数;
  在 <init-param>这个标签中的 <param-name>标签定义的是参数名,<param-value>标签定义的是参数的值,

<servlet>
 	<servlet-name>Test</servlet-name>
	<servlet-class>D20210220.TestServlet</servlet-class>
	<init-param>
		<param-name>name1</param-name>
		<param-value>value1</param-value>
	</init-param>
	<init-param>
		<param-name>name2</param-name>
		<param-value>value2</param-value>
	</init-param>
 </servlet>
 <servlet-mapping>
 	<servlet-name>Test</servlet-name>
 	<url-pattern>/TestServlet</url-pattern>
 </servlet-mapping>

注解方式设置

  Servlet 3.0 以上的版本可以使用 @WebServlet 注解,使用这种方式设置初始参数需要记 WebServlet 的一些使用,这里不做讲解。

@WebServlet(urlPatterns = "/TestServlet1",initParams = {
		@WebInitParam(name = "name1",value="value1"),
		@WebInitParam(name = "name2",value="value2")
}, name = "Hello")

ServletCofig 对象获取初始参数

1. getInitParameter() 方法

  getInitParameter() 根据传递的字符串找到对应的参数名,返回其参数值

public void init(ServletConfig config) throws ServletException {
	// 返回 web.xml 文件中初始参数名为 name1 的参数的值
  	String val1 = config.getInitParameter("name1");// "value1"
  	System.out.println(val1);
  	// 返回 web.xml 文件中初始参数名为 name2 的参数的值
  	String val2 = config.getInitParameter("name2");// "value2"
  	System.out.println(val2);
}

在这里插入图片描述

  上面代码中,变量 val1 的值就是前面 web.xml 文件中<param-value>value1</param-value>中的值。

2. getInitParameterNames() 方法

  getInitParameterNames() 获取的是在 web.xml 文件中设置的所有参数的参数名,返回的是一个可遍历的枚举型的字符串。

 public void init(ServletConfig config) throws ServletException {
 	// 获取所有初始参数的参数名
   	Enumeration<String> names = config.getInitParameterNames();
   	// 遍历 names
   	while(names.hasMoreElements()) {
   		// 获取参数名
   		String paramName = names.nextElement();
   		// 获取参数名对应的参数值
   		String paramValue = config.getInitParameter(paramName);
   		System.out.println(paramName + ":" + paramValue);
   	}
}

在这里插入图片描述

3. getServletName() 方法

   getServletName() 方法获取的是 Servlet 的名字,也就是 web.xml 文件中 <servlet-name>Test</servlet-name>的值——Test。

public void init(ServletConfig config) throws ServletException {
   	String servletName = config.getServletName();
   	System.out.println(servletName);
}

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值