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

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>testdemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <context-param>
   <param-name>appversion</param-name>
   <param-value>1.0</param-value>
  </context-param>
 
  <servlet>
   <servlet-name>test</servlet-name>
   <servlet-class>test.TestServlet</servlet-class>
   <init-param>
    <param-name>name</param-name>
    <param-value>yedward</param-value>
   </init-param>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>test</servlet-name>
   <url-pattern>/test</url-pattern>
  </servlet-mapping>
</web-app>
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读两个节点:<listener></listener>和<context-param></context-param>,容器创建一个ServletContext,这个WEB项目所有部分都将共享这个上下文,容器将<context-param></context-param>转化为键值对,并交给ServletContext;容器创建<listener></listener>中的类实例,即创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得:

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

时间: 2024-11-03 15:24:35

java的web.xml中context-param与init-param的区别介绍的相关文章

web.xml 中的listener、 filter、servlet 加载顺序及其详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰.         首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet         同时还存在着这样一种配置节:context-pa

web.xml中的所有配置,Listener和Filter的加载顺序

web.xml 中的listener. filter.servlet 加载顺序及其详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰.         首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter

解析web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数:1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 复制代码 代码如下: <context-param>            <param-name>context/param</param-name>            <param-value>avalible during application</param-value>   </con

解析web.xml中在Servlet中获取context-param和init-param内的参数_java

web.xml里面可以定义两种参数:1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 复制代码 代码如下: <context-param>           <param-name>context/param</param-name>           <param-value>avalible during application</param-value>  </contex

Java在Web应用中嵌入H2数据库教程

一.搭建测试环境和项目 1.1.搭建JavaWeb测试项目 创建一个[H2DBTest]JavaWeb项目,找到H2数据库的jar文件,如下图所示: H2数据库就一个jar文件,这个Jar文件里面包含了使用JDBC方式连接H2数据库时使用的驱动类,将"h2-1.4.183.jar"加入到[H2DBTest]项目中,如下图所示: 二.启动H2数据库 既然是要将H2数据库作为我们Web应用的一部分嵌入进来,那么我们就要在Web应用中启动H2数据库的服务,这样我们才能够连接到H2数据库,因此

web.xml中参数的问题:context-param和init-param的区别

web.xml里面可以定义两种参数:(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param>           <param-name>context/param</param-name>           <param-value>avalible during application</param-value>  </context-param>

JSP取得在WEB.XML中定义的参数

js|web|xml 在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <we

在web.xml中添加metadata-complete=&amp;amp;quot;true&amp;amp;quot;有什么作用?

问题描述 在web.xml中添加metadata-complete="true"有什么作用? 解决方案 http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/

JSP取得在WEB.XML中定义的参数_XML/RSS

在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>