一聚教程网:一个值得你收藏的教程网站

热门教程

java的web.xml中context-param与init-param的区别介绍

时间:2022-06-29 02:52:18 编辑:袖梨 来源:一聚教程网

web.xml中的区别在于设置的是一个在应用中全局(ServletContext范围内)可见的参数,而设置的是一个在应用中局部(ServletRequest范围内)可见的参数。



  testdemo
 
    index.jsp
 

 
 
   appversion
   1.0
 

 
 
   test
   test.TestServlet
   
    name
    yedward
   

 

 
 
   test
   /test
 


package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {
  private static final long serialVersionUID = 5222793251610509039L;

  @Override
  public void init() throws ServletException {
    System.out.println(this.getInitParameter("name"));
  }

  @Override
  protected void service(HttpServletRequest request, HttpServletResponse resposne)
      throws ServletException, IOException {
    System.out.println(this.getInitParameter("name"));
    System.out.println(this.getServletContext().getInitParameter("appversion"));
    System.out.println(request.getServletContext().getInitParameter("appversion"));
  }
}

上面代码的输出结果是:

yedward
yedward
1.0
1.0
启动一个WEB项目的时候,容器(如:Tomcat)会去配置文件web.xml读两个节点:,容器创建一个ServletContext,这个WEB项目所有部分都将共享这个上下文,容器将转化为键值对,并交给ServletContext;容器创建中的类实例,即创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得:

ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");
得到这个context-param的值之后,你就可以做一些操作了。注意,这个时候你的WEB项目还没有完全启动完成,这个动作会比所有的Servlet都要早。换句话说,这个时候,对中的键值做的操作,将在WEB项目完全启动之前被执行。

热门栏目