JSP + Jndi + Spring + Hibernate组合

本文详细介绍如何在Tomcat5.5.x环境下配置Spring1.2.x与Hibernate3.x进行整合,包括设置数据库连接池、调整web.xml及Server.xml文件等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是這個組合成功運作所需注意的地方。

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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
2
3
4
5
#這是我用的設定檔,請自行修改成以符合實務上需求
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網頁試試看吧...Big SmileBig SmileBig Smile...以下是我測試用的JSP,請自行修改以符合實務上需求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ 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>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值