JSP + Jndi + Spring + Hibernate 心得筆記

這几天小試了一下JSP +Jndi + Spring + Hibernate組合的功能,想讓JSP網頁可以秀出Database裡的資料。試了老半天,發現要讓這組合成功運作,還真的是很麻煩,很多細節要注意。而且很多設定找不到文件,很讓人...DeadDeadDead


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


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設定檔,加入下面藍字所示的相關設定

None.gif < Host >
None.gif  
None.gif  dot.gif中略dot.gif
None.gif  
None.gif  
< Context  dot.gif中略dot.gif >
None.gif    
None.gif    
<!--  Tomcat5.5的DBCP設定方式寫法與之前版本完全不同  -->
None.gif    
< Resource 
None.gif      
name ="jdbc/scott"
None.gif      auth
="Container"
None.gif      factory
="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"              
None.gif      type
="javax.sql.DataSource"
None.gif      driverClassName
="oracle.jdbc.driver.OracleDriver"             
None.gif      url
="jdbc:oracle:thin:@localhost:1521:orcl"               
None.gif      username
="scott"             
None.gif      password
="tiger"
None.gif      maxIdle
="10"
None.gif      maxWait
="1000"               
None.gif      maxActive
="100" />     
None.gif      
None.gif  
</ Context >
None.gif
</ Host >


2.2 接下來修改web.xml設定檔藍字所示內容

None.gif <? xml version="1.0" encoding="UTF-8" ?>
None.gif
< web-app  id ="WebApp_ID"  version ="2.4"
None.gif  xmlns
="http://java.sun.com/xml/ns/j2ee"
None.gif  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
None.gif  xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
None.gif 
None.gif  
<!--  指定log4j設定檔位置  -->
None.gif  
< context-param >
None.gif    
< param-name > log4jConfigLocation </ param-name >
None.gif    
< param-value > /WEB-INF/log4j.properties </ param-value >
None.gif  
</ context-param >
None.gif      
None.gif  
<!--  指定spring設定檔位置  -->
None.gif  
< context-param >
None.gif    
< param-name > contextConfigLocation </ param-name >
None.gif    
< param-value > /WEB-INF/beans-config.xml </ param-value >
None.gif  
</ context-param >  
None.gif  
None.gif  
<!--  一定要在ContextLoaderListener設定之前加上Log4jConfigListener設定,如此一來ContextLoaderListener才可以正常運作  -->
None.gif  
< listener >
None.gif    
< listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
None.gif  
</ listener >
None.gif 
None.gif  
< listener >
None.gif    
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
None.gif  
</ listener >   
None.gif 
None.gif  
<!--  指定此項Filter可使Spring取回的DomainObject在JSP(View層)作完所有的事情後,才將Hiberante Session給Close  -->
None.gif  
< filter >
None.gif      
< filter-name > hibernateFilter </ filter-name >
None.gif      
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
None.gif  
</ filter >  
None.gif  
None.gif  
< filter-mapping >
None.gif      
< filter-name > hibernateFilter </ filter-name >
None.gif       
< url-pattern > /* </ url-pattern >
None.gif  
</ filter-mapping >
None.gif  
None.gif  
<!--  指定JNDI JDBC DataSource  -->
None.gif  
< resource-ref >
None.gif    
< description > JNDI JDBC DataSource </ description >
None.gif    
< res-ref-name > jdbc/scott </ res-ref-name >
None.gif    
< res-type > javax.sql.DataSource </ res-type >
None.gif    
< res-auth > Container </ res-auth >
None.gif  
</ resource-ref >
None.gif  
None.gif  dot.gif中略dot.gif
None.gif
None.gif
</ web-app >


2.3 在/WEB-INF目錄裡面,增加beans-config.xml這個Srping設定檔,修改藍字所示內容


None.gif <? xml version="1.0" encoding="UTF-8" ?>  
None.gif
<! DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
None.gif "http://www.springframework.org/dtd/spring-beans.dtd"
>  
None.gif
< beans >  
None.gif    dot.gif中略dot.gif
None.gif     
None.gif    
<!--  利用JNDI的方式連結到DataSource  -->
None.gif    
< bean  id ="dataSource"  class ="org.springframework.jndi.JndiObjectFactoryBean" >  
None.gif        
< property  name ="jndiName" >   
None.gif            
<!--  不可省略"java:comp/env/"字串,否則會出現異常  -->
None.gif            
< value > java:comp/env/jdbc/scott </ value >  
None.gif        
</ property >   
None.gif    
</ bean >          
None.gif    
None.gif    dot.gif中略dot.gif
None.gif
</ beans >


2.4 在/WEB-INF目錄裡面,增加log4j.properties這個log4j設定檔

None.gif #這是我用的設定檔,請自行修改成以符合實務上需求
None.giflog4j.rootLogger=info,consoleAppender
None.giflog4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
None.giflog4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
None.giflog4j.appender.consoleAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n


3.大功告成...寫個測試的JSP網頁試試看吧... Big Smile Big Smile Big Smile...以下是我測試用的JSP,請自行修改以符合實務上需求

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值