一般 WebApp 的參數, 放在 web.xml 裡面,也可以放在web容器的部署文档里面,比如数据源配置,比如放在\Tomcat 5.0\conf\Catalina\localhost\**.xml里面.
一、先总结一下放在web.xml文件后进行读取的各种情况.
- 以下是要用 JSP 讀取 web.xml 的方法:
web.xml:
1
2
3
4
| <context-param> <param-name>test</param-name> <param-value>test_value</param-value> </context-param> |
JSP:
1
| String test = new String(application.getInitParameter("test")); |
2. 以下是要用 Servlet 讀取 web.xml 的方法:
web.xml:
1
2
3
4
5
6
7
8
| <servlet> <servlet-name>ServletName</servlet-name> <servlet-class>com.xxx.ServletName</servlet-class> <init-param> <param-name>test</param-name> <param-value>test_value</param-value> </init-param> </servlet> |
Servlet:
1
2
3
4
5
| public void init(javax.servlet.ServletConfig config) throws ServletException { super.init( config ); test = config.getInitParameter("test"); } |
3. 以下是要用 Struts 讀取 web.xml 的方法:
web.xml:
1
2
3
4
5
6
7
8
9
10
11
12
| <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>FINAL</param-name> <param-value>XXX</param-value> </init-param> </servlet> |
Action:
1
2
3
4
5
| import javax.servlet.ServletConfig; ... javax.servlet.ServletConfig config = this.getServlet().getServletConfig(); String test = config.getInitParameter("FINAL"); |
二、web容器的部署文档里面,比如数据源配置,比如放在\Tomcat 5.0\conf\Catalina\localhost\**.xml里面.
通过JNDI方式获得配置信息的方法
配置文件**.xml(名字任意)
<?xml version='1.0' encoding='utf-8'?>
<Context path="/webName" displayName="Agent3.0" docBase="F:\workspace\webName" reloadable="true">
<Resource name="default" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource"/>
<ResourceParams name="default">
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>driverClass</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>jdbcUrl</name>
<value>jdbc:oracle:thin:@127.0.0.1:1521:dbName</value>
</parameter>
<parameter>
<name>userName</name>
<value>userName</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
</ResourceParams>
</Context>
备注:如果docBase是想对路径,比如\webName,tomcat启动时就会在webapp目录下寻找webName工程,如果是绝对路径,就会加载绝对路径下的工程,这种方式适合在开发测试过程中使用,当类文件和jsp文件修改编译后,tomcat会使用热部署方式自动部署,不需要手动重启。
同时到web应用程序目录下的web-inf中,打开web.xml,加入如下的配置:
</resource-ref>
<resource-ref>
<description>webName</description>
<res-ref-name>jdbc/default</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
</resource-ref>
在jsp/servlet/Action中使用刚才部署的数据源代码如下:
//通过JNDI获得数据库连接
Context context = new InitialContext();
dSource = (oracle.jdbc.pool.OracleDataSource) context.lookup("java:comp/env/default"); //Oracle数据源
dSource = (java.sql.DataSource) context.lookup("java:comp/env/default"); //java自带数据源
注意:红色的名字是和配置文档中的名字一致。
三、tomcat的所有项目使用相同的数据源时,可以在server.xml配置
<Resource
name="test"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
password="526633"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/my"
maxActive="4"/>