servlet获取初始化参数

本文介绍了三种在Servlet中获取初始化参数的方法:1) 使用getInitParameter()方法从web.xml配置;2) 配置上下文参数以供多个servlet共享;3) 通过@Resource进行资源注射。注意@Resource标签的顺序,错误的顺序会导致报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用servlet提供的getInitParameter()方法获得初始化参数

  1. 首先,在web.xml文件中为servlet配置初始化参数:
    <servlet>
    	<servlet-name>getParam</servlet-name>
    	<servlet-class>getParam</servlet-class>
    
    	<!--使用init-patam声明账号密码的初始值,在servlet中能够使用账号及密码-->
    	<init-param>
    	  <param-name>name</param-name>
    	  <param-value>xm99</param-value>
    	</init-param>
    	
    	<init-param>
      		<param-name>password</param-name>
      		<param-value>123456</param-value>
    	</init-param>
    	
    	</servlet>
    	
    	<servlet-mapping>
    		<servlet-name>getParam</servlet-name>
    		<url-pattern>/getParam</url-pattern>
      	</servlet-mapping>
    
  2. 在方法中使用servlet提供的getInitParameter()方法获得初始化参数
    	public class getParam extends HttpServlet {
    
        @Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        	req.setCharacterEncoding("utf-8");
        	resp.setCharacterEncoding("utf-8");
    
            String name = this.getInitParameter("name");
        	String password = this.getInitParameter("password");
    
        	System.out.println(name);
        	System.out.println(password);
    
    	}
    }
    

二、上下文参数配置<context-param>

使用</init-param>提供的参数因为实在servlet里面的,所以只能够被一个servlet使用,所以,当多个servlet需要使用同一个参数时,可以将这个参数放在servlet外面,使用<context-param>来进行设置。

三、使用资源注射的方式@Resource

使用资源注射的方式的时候,要使用<env-entry>标签来配置数据信息


<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>getParam</servlet-name>
    <servlet-class>getParam</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>getParam</servlet-name>
    <url-pattern>/getParam</url-pattern>
  </servlet-mapping>

  <env-entry>
    <env-entry-name>name</env-entry-name>
    <env-entry-value>xm99</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

  <env-entry>
    <env-entry-name>password</env-entry-name>
    <env-entry-value>123456</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>
</web-app>

而在<env-entry>标签中,<env-entry-name><env-entry-value><env-entry-type>三个标签的顺序不能发生改变,如果顺序不对的话,会报错。

在方法中进行数据注入:


public class getParam extends HttpServlet {

    private @Resource(name = "name") String name;

    private @Resource(name = "password") String password;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");

        System.out.println(name);
        System.out.println(password);

    }
}

将属性放在方法外这种做法是线程不安全的,并不建议使用,在这里只是为了方便演示。

@Resource标签不止能够注入属性值,还能够注入数据源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值