java获取web.xml 参数_web.xml中获取全局参数

http://blog.csdn.net/wjp553650958/archive/2009/08/30/4499540.aspx

读取容器配置参数---context-param和init-param区别

web.xml里面可以定义两种参数:

(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下: 

context/param

avalible during application

name1

value1

(2)servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:

MainServlet

com.wes.controller.MainServlet

param1

avalible in servlet init()

0

在servlet中可以通过代码分别取用:

package com.wes.controller;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

public class MainServlet extends HttpServlet ...{

public MainServlet() ...{

super();

}

public void init() throws ServletException ...{

System.out.println("下面的两个参数param1是在servlet中存放的");

System.out.println(this.getInitParameter("param1"));

System.out.println("下面的参数是存放在servletcontext中的");

System.out.println(getServletContext().getInitParameter("context/param"));

}

}

一种参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得

到?(在servlet的init()方法中通过this.getInitParameter("param1")取得)

第二种参数只能在servlet的init()方法中通过this.getInitParameter("param1")取得

---------------------------------------------------------------------

ServletContextListener实现读取web.xml中context-param信息      2009年03月27日 星期五 22:37

用部署文件来存储配置参数在Java中是一种很流行的做法。

配置参数一般存放在context-param元素中,每一个context-param元素代表了一个键值对。

们可以通过实现ServletContextListener接口读取该键值对中的值,在web应用程序初始化的时候,调用

ServletContextListener的contextInitialized()方法,所以我们我们可以重写该方法,实现读取操作。可以这样实

现:

public class AppListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent sce) {

try {

MyConfig config = new MyConfig();//存放配置信息,用Map实现

Enumeration parameters =  sce.getServletContext().getInitParameterNames();

while(parameters.hasMoreElements()){

String name =  (String) parameters.nextElement();

config.addKeyTValue(name, sce.getServletContext().getInitParameter(name));

}

//相应的键值对存到map中

config.addKeyValue(parameter, sc.getInitParameter(parameter));

}

} catch(Exception e) {

System.out.println("com.shou error:" + e.getMessage());

}

}

public void contextDestroyed(ServletContextEvent arg0) {

}

}

MyConfig类:(Singleton Config)

package com.myapp;

import java.util.Collection;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/**

*

* @author Administrator

*/

public class MyConfig{

public static MyConfig myconfig;

public static HashMap config = new HashMap();

public static HashMap getConfig() {

return config;

}

public static MyConfig getInstance(){

if(myconfig==null){

myconfig = new MyConfig();

}

return myconfig;

}

public static void setConfig(HashMap config) {

MyConfig.config = config;

}

public HashMap addKeyTValue(String name,String value){

this.config.put(name, value);

return this.config;

}

}

接着,必须在web.xml中配置相应的监听类,才能在初始化的时候,自动调用该方法。如:

com.myapp.MyListener

这样就可以在任何一个JSP页面,通过EL表达式或JSTL读到context-param中的内容。

有的网友说在web.xml内定义元素时得注意下列两点:

元素必须出现在任何Context起始参数(由元素所定义)之后。

元素必须出现在任何Servlet实体(由元素所定义)之前。

但是我在TOMCAT5.5 + J2EE 5下配置web.xml并没有按照上述的严格限制也能成功读取信息。

难道是版本的问题吗。

在Struts 1.X下,通过一个自定义的Singleton Config类,可以让web.xml中的配置参数在整个应用程序里都能被共享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值