关于连接数据库时读web.xml配置的问题
数据库的用户名、密码、连接驱动、地址等写到了web.xml配置里面,连接数据库时,需要从web.xml里面读取数据库的配置信息,读取方法如下:
?
?
??
但是,这种用读取xml文件来读取配置信息的方法其实挺麻烦的,在Java的servlet里面,可以利用init()方法里面的
ServletConfig来读取配置信息,介绍如下:
?
ServletConfig:从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
?
1、把需要用到的配置信息放到用到需要此信息的servlet里面,例如:
?
?
<web-app> <servlet> <display-name>xxxx</display-name> <servlet-name>xxxx</servlet-name> <servlet-class>xxxx</servlet-class> <init-param> <param-name>name</param-name> <param-value>value</param-value> </init-param> </servlet></web-app>?
?
2、下面以取上面的配置为例介绍一下用法,在servlet中要得到ServletConfig对象有两种方法:
在inii()方法中取到:通过init的重载方法传递
public?class?Test?extends?HttpServlet?
{?? ?ServletConfig?config;
?? ? ?//定义一个静态参数,在doGet或者doPost里面可以直接调用
?? ? ?private static String name = "";
?? ?public?void?init(ServletConfig?config)?throws?ServletException?{
?? ? ? ?this.config?=?config;config=this.getServletConfig(); name = config.getInitParameter("name");
?? ?}
}
然后在下面的方法中就可以访问config对象。但要注意,为了确保能从构造方法中到当前servlet的config对象,应该调用父类的构造方法:
public?class?Test?extends?HttpServlet?
{
?? ?ServletConfig?config;?? ??//定义一个静态参数,在doGet或者doPost里面可以直接调用
?? ? ?private static String name = "";
?? ?public?void?init(ServletConfig?config)?throws?ServletException?{
?? ? ? ?super.init(config);
?? ? ? ?this.config?=?config;?? ? ? ?config=this.getServletConfig(); name = config.getInitParameter("name");
?? ?}
}
通过getServletConfig()方法直接到时,这样做的好处是不必调手工传递属性,想在任何时候都可以得到。?
?
?