Servlet中初始化参数和上下文参数的配置

来源:互联网 发布:网络打印app 编辑:程序博客网 时间:2024/04/30 21:39

在Java Web开发中。常量信息通常倾向于写在配置文件中。这样需求变化时只需要修改一下配置文件就可以了。而不用大量的改动代码并造成程序的重新编译。web.xml提供了这种配置初始化参数的功能。

<servlet>
    <servlet-name>ServletParamTest</servlet-name>
    <servlet-class>servlet.ServletParamTest</servlet-class>
    <init-param>
     <param-name>helloween</param-name>         <!--第一个参数-->
     <param-value>password</param-value>        <!--第一个参数的参数值-->

    </init-param>
    <init-param>
     <param-name>admin</param-name>             <!--第二个参数-->
     <param-value>admin</param-value>           <!--第二个参数的参数值-->
    </init-param>
    <init-param>
     <param-name>babyface</param-name>          <!--第三个参数-->
     <param-value>babyface</param-value>        <!--第二个参数的参数值-->
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>ServletParamTest</servlet-name>
    <url-pattern>/servlet</url-pattern>
  </servlet-mapping>

 

Servlet中提供方法getInitParameter(String param)来获取初始化参数值。还可以使用方法getInitParameterNames()来返回所有配置参数的名称的集合。这个集合为枚举类型。这种配置方式只可以在该Servlet种才可对其实现取值。而其他的Servlet中则不可以。因为它是配置在某一个<servlet></servlet>配置节内的。

举一个取值的例子:

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

  request.setCharacterEncoding("GBK");
  response.setCharacterEncoding("GBK");
  response.setContentType("text/html");
  Enumeration parmas=this.getInitParameterNames(); //只获得所有参数名称。而不获得参数值
  while(parmas.hasMoreElements())   //判断条件为枚举类型里是否有至少一个值
  {
   String name1=(String) parmas.nextElement();  //获取下一个参数名称
   String name=getInitParameter(name1);  //根据参数名称获得参数值
   request.setAttribute("name", name);
     
  }
  response.sendRedirect("index.jsp");
 

而要做到每个Servlet中都可取到的参数则需要上下文参数。而它需要使用标签<context-param>来配置

 


    <context-param>
     <param-name>helloween</param-name>         <!--第一个参数-->
     <param-value>password</param-value>        <!--第一个参数的参数值-->

    </context-param>
    <context-param>
     <param-name>admin</param-name>             <!--第二个参数-->
     <param-value>admin</param-value>           <!--第二个参数的参数值-->
    </context-param>
    <context-param>
     <param-name>babyface</param-name>          <!--第三个参数-->
     <param-value>babyface</param-value>        <!--第二个参数的参数值-->
    </context-param>

获取context-param可以使用ServletContext对象。Servlet中通过getServletConfig().getServletContext()来获取ServletContext对象,使用该对象的getInitParameter()方法获取指定名称的参数值。getInitParameterNames()获取所有参数名称。

 

在Java 5.0里开始引入注解的概念。而是用注解可以实现不用Servlet主动读取配置的参数。而由WEB容器启动时自动把web.xml里配置的信息注射到Servlet里。不需要编写任何代码。明天说这个。今天睡觉了。


0 0
原创粉丝点击