JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Application Framework » Spring  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by caterpillar at 2006-08-14 21:04
本主題所含的標籤
無標籤
作者 JSP + Jndi + Spring + Hibernate 心得筆記 [精華]
wing_zero

Keroro捕獲~~是也



發文: 213
積分: 9
於 2006-08-06 13:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這几天小試了一下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設定檔,加入下面藍字所示的相關設定
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>


在設定檔部份,我並未列出全部設定檔,只列出較不為人知的相關設定。一些很容易查到資料(像是hiberante、spring的設定)就自行查查書籍吧...CoolCoolCool


wing_zero edited on 2006-08-06 17:56
reply to postreply to post
俺的部落格
作者 Re:JSP + Jndi + Spring + Hibernate 心得筆記 [Re:wing_zero]
c_c_lai





發文: 10
積分: 0
於 2007-10-19 18:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝大大辛苦的心得筆記,尤其是細的小節都一一標示出來,
那天我會一個個來模擬測試看看,謝謝啦


reply to postreply to post
» JWorld@TW »  Java Application Framework » Spring

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8