一、使用servlet提供的getInitParameter()方法获得初始化参数
- 首先,在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>
- 在方法中使用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标签不止能够注入属性值,还能够注入数据源。