以下是這個組合成功運作所需注意的地方。
1.系統建置環境如下
AP Server : Tomcat 5.5.x
Database : Oracle 10g
Framework : Spring 1.2.x + Hibernate 3.x
2.相關重要修改設定如下
2.1 首先,要利用Tomcat的DBCP Connection pool功能,所以必需先改Tomcat裡面的Server.xml設定檔,加入下面藍字所示的相關設定
2.2 接下來修改web.xml設定檔藍字所示內容
2.3 在/WEB-INF目錄裡面,增加beans-config.xml這個Srping設定檔,修改藍字所示內容
2.4 在/WEB-INF目錄裡面,增加log4j.properties這個log4j設定檔
3.大功告成...寫個測試的JSP網頁試試看吧...

...以下是我測試用的JSP,請自行修改以符合實務上需求
1.系統建置環境如下
AP Server : Tomcat 5.5.x
Database : Oracle 10g
Framework : Spring 1.2.x + Hibernate 3.x
2.相關重要修改設定如下
2.1 首先,要利用Tomcat的DBCP Connection pool功能,所以必需先改Tomcat裡面的Server.xml設定檔,加入下面藍字所示的相關設定
1 |
<Host> ...中略... <Context ...中略...> <!-- Tomcat5.5的DBCP設定方式寫法與之前版本完全不同 --> <Resource name="jdbc/scott" auth="Container" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxIdle="10" maxWait="1000" maxActive="100"/> </Context> </Host> |
2.2 接下來修改web.xml設定檔藍字所示內容
1 |
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 指定log4j設定檔位置 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <!-- 指定spring設定檔位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/beans-config.xml</param-value> </context-param> <!-- 一定要在ContextLoaderListener設定之前加上Log4jConfigListener設定,如此一來ContextLoaderListener才可以正常運作 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定此項Filter可使Spring取回的DomainObject在JSP(View層)作完所有的事情後,才將Hiberante Session給Close --> <filter> <filter-name>hibernateFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 指定JNDI JDBC DataSource --> <resource-ref> <description>JNDI JDBC DataSource</description> <res-ref-name>jdbc/scott</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ...中略... </web-app> |
2.3 在/WEB-INF目錄裡面,增加beans-config.xml這個Srping設定檔,修改藍字所示內容
1 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> ...中略... <!-- 利用JNDI的方式連結到DataSource --> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <!-- 不可省略"java:comp/env/"字串,否則會出現異常 --> <value>java:comp/env/jdbc/scott</value> </property> </bean> ...中略... </beans> |
2.4 在/WEB-INF目錄裡面,增加log4j.properties這個log4j設定檔
1 |
#這是我用的設定檔,請自行修改成以符合實務上需求 log4j.rootLogger=info,consoleAppender log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout log4j.appender.consoleAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n |
3.大功告成...寫個測試的JSP網頁試試看吧...



1 |
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="org.springframework.web.context.WebApplicationContext"%> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@ page import="com.db.table.Emp"%> <%@ page import="com.db.dao.IEmpDAO;"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Spring Test</title> </head> <body> <% WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); IEmpDAO empDAO = (IEmpDAO)context.getBean("empDAOImpl"); Emp emp = empDAO.find(new Short((short)7369)); out.println("Ename: " + emp.getEname() + "<br>"); out.println("Dname: " + emp.getDept().getDname() + "<br>"); %> </body> </html> |