初始化参数及访问应用上下文
获得Servlet初始化参数
配置Servlet时,可以对该Servlet设置初始化参数,通过初始化参数可以更灵活的控制Servlet的运行时行为。
设置初始化参数需要修改web.xml文件,在元素中增加元素,代码如下。
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>demo.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>initParam</param-name>
<param-value>Hello Servlet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
说明 :定义Servlet的初始化参数时使用元素。元素是元素的子元素,使用元素必须包括元素和元素。元素定义初始化参数的名字,元素指定初始化参数的值。
初始化参数在Servlet的初始化环节被加载,并可通过ServletConfig实例的getInitParameter(String name)方法进行访问。下面写一下代码。
public void init() throws ServletException{
System.out.println("初始化,init()方法被调用");
}
public void doGet(HttpServletRequset requset,HttpServletResponse response)throws ServletException,IOException{
System.out.println("处理请求时,doGet()方法被调用。");
String initParam=getInitParameter("initParam");
System.out.println(initParam);
}
通过GenericeServlet中定义的getInitParameter(String name);方法获取初始化参数。该方法实际上是通过调用ServletConfig的getInitParameter();方法来获取初始化参数值,比getServletConfig.getInitParameter(String name);的完整写法更加简洁方便。
获得上下文参数
为某个Servlet定义的初始化参数只能被该Servlet访问,如果该参数需要被更多的Web应用组件访问,可以使用上下文参数定义。要定义上下文参数同样需要对web.xml文件进行修改。如下
<web-app>
<context-param>
<param-name>contextParam</param-name>
<param-value>ContextParamValue</param-value>
</context-param>
</web-app>
说明: 使用 元素声明Web应用的全局范围参数,元素包括和元素。元素指定参数的名字,元素指定参数的值。
示例如下:
public void doGet(HttpServletRequset requset,HttpServletResponse response)throws Exception{
System.out.println("处理请求时,doGet()方法被调用。");
String initParam=getInitParameter("initParam");
String contextParam=this.getServletContext().getInitParameter("contextParam");
System.out.println("Servlet 初始化参数"+initParam);
System.out.println("上下文参数"+contextParam);
}