亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

搭建SSH時的思考和遇到的幾個問題的解決方法

2020-07-27 21:44:18
字體:
來源:轉載
供稿:網友
SSH流行很久了,一直看到官方文檔和網上都在講如何整合SSH,討論各種整合的優缺點。今天我比較閑,也用我的一些想法來試著整合這三個最流行的框架。

本次所用版本為:Struts 1.3.9   Spring 2.5   Hiberante 3.2
開發工具和環境為:Eclipse 3.3+MyEclipse 6.0+JBoss 4.2+Tomcat

用SSH時,我們的架構自然就會分成三層,即表現層,邏輯層和持久層,按照Martin Flower的指導思想,耦合越少越好,下層為上層提供服務,這也是Rod開發Spring的指導思想之一,所以我首先想到的就是如何減少到最低的耦合。
根據Spring 2.0官方文檔中推薦的做法,Spring與Struts1.x集成,有采用代理類的方式,也有用ActionSupport的方式,但是我認為這兩種方式無疑都有很強的侵入性和依賴性,這與Spring的思想有些矛盾。
我采用AutowiringRequestProcessor來做,這個類會自動為你裝載你所需要的Service,根據其Java Doc的提示,其默認是byType匹配的,當然你也可以用byName的方式,我認為以Type的方式就OK了。來看看兩個配置文件吧,先來看看Struts的配置文件struts-config.xml:

 1  <? xml version="1.0" encoding="UTF-8" ?> 
 2  <! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd" > 
 3  
 4  < struts-config > 
 5      < form-beans > 
 6          < form-bean  name ="loginForm"  type ="com.***.ssh.view.login.LoginForm"   /> 
 7      </ form-beans > 
 8  
 9      < global-exceptions  /> 
10      < global-forwards  /> 
11      < action-mappings > 
12          < action  name ="loginForm"  path ="/login"  scope ="request" 
13             type ="com.***.ssh.view.login.LoginAction"  validate ="false"   /> 
14      </ action-mappings > 
15     
16      < controller
17          processorClass ="org.springframework.web.struts.AutowiringRequestProcessor"   /> 
18  
19      < message-resources  parameter ="ApplicationResources"   /> 
20  </ struts-config > 
21  
22  
這個文件中可以發現,跟沒有與Spring集成時就一點不一樣,多了一行:
 <controller  processorClass="org.springframework.web.struts.AutowiringRequestProcessor" />

再來看看Spring的配置文件applicationContext.xml:

 1  <? xml version="1.0" encoding="UTF-8" ?> 
 2  <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > 
 3  
 4  < beans > 
 5  
 6      < bean  id ="SSHSessionFactory" 
 7         class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" > 
 8          < property  name ="configLocation" > 
 9              < value > classpath:hibernate.cfg.xml </ value > 
10          </ property > 
11      </ bean > 
12     
13      < bean  name ="LoginService" 
14         class ="com.***.ssh.biz.login.LoginService"  singleton ="false" > 
15          < property  name ="dao" > 
16              < ref  bean ="UsersDao"   /> 
17          </ property > 
18      </ bean > 
19  
20      < bean  id ="UsersDao"  class ="com.***.ssh.persistence.UserDao" > 
21          < property  name ="sessionFactory" > 
22              < ref  bean ="SSHSessionFactory"   /> 
23          </ property > 
24      </ bean > 
25  </ beans > 
26  
這里面也沒有多余的內容,不會出現代理方式時,多份XML同時配置的問題,減少了維護量。
同時,你會發現,我并沒有把Hibernate的具體配置放在這里面,而是用Hibernate自身的配置來管理。

這樣的話,我們三層之間的依賴性會降到較低,兩頭可以任意換到其中的某一層。

順便要說的是,常見的書籍上面發現往往不會有如此深入的探討,難道是怕初學者看不懂嗎?
另外,對于一個架構來說,要解決的問題決不是指這些,通常我們可以采用RUP的4+1視圖的方法去考慮架構的方方面面。我們也可以從以下一些方面來各個擊破:安全性,數據輸入輸出的校驗與轉換,國際化,LOG,異常處理,異構系統整合,后臺運行程序等等。如果是多個數據庫,我們還需要更多的考慮事務控制。

我想我后面會去完善這個整合,并實現一個Demo,作為小的簡單的項目快速開發的基礎。



整合時遇到過如下問題:
問題1:啟動時出現 “嚴重: Error listenerStart ”
這個問題,網上有很多解決辦法:
有一種最簡單的解決辦法是把用Listener初始化Spring改為用Servlet初始化Spring,但這樣的方法不太好,一是沒有找到根源,二是可能會帶來新的問題。
比較好的一種解決辦法是,加上Log4J的相關配置,然后再啟動時,就會出現各類詳細信息,這樣可根據具體信息再來解決,一般可能是DataSource配置,或環境配置有問題。
參考網址:http://hi.baidu.com/xht314/blog/item/808ecf13c1dd1820dd5401af.html

問題2:遇到“Required extension qdox not found”這樣的提示
網上也有解答,我用的方法是直接把commons-attributes-compiler.jar這個包去掉。當然如果你要用到這個包的話,可以參考下面這個地址:
http://hi.baidu.com/sky_lei/blog/item/77ee17085543b232e8248824.html

問題3:Struts包與Spring包沖突的問題
我遇到包有沖突,換成Struts需要的優先就OK了,現在的JAR檔越來越麻煩了,很多項目的JAR檔都被開發人員搞得亂七八糟,看來Maven是個好東西,至少思想是好的,可能下一步需要研究一下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品青青大伊人av| 亚洲无限乱码一二三四麻| 日韩免费观看视频| 国产精品v片在线观看不卡| 久久综合伊人77777尤物| 欧美成人合集magnet| 国产97人人超碰caoprom| 456亚洲影院| 亚洲精品资源在线| 亚洲精品免费一区二区三区| 亚洲乱码国产乱码精品精天堂| 51ⅴ精品国产91久久久久久| 久久精品国产欧美亚洲人人爽| 国产一区玩具在线观看| 欧美在线视频a| 在线观看视频亚洲| 国产精品草莓在线免费观看| 日本一区二区在线免费播放| 日韩av在线不卡| 国产va免费精品高清在线观看| 亚洲欧美日韩网| 欧美成人在线免费| 日韩中文字幕亚洲| 亚洲娇小xxxx欧美娇小| 欧美黑人视频一区| 欧美成人黑人xx视频免费观看| 日韩高清电影好看的电视剧电影| 国产精品18久久久久久首页狼| 亚洲自拍偷拍福利| 美女少妇精品视频| 亚洲国产欧美精品| 欧美精品国产精品日韩精品| 亚洲免费电影在线观看| 亚洲精品第一国产综合精品| 亚洲二区中文字幕| 91免费观看网站| 日韩电影网在线| 国模精品系列视频| 亚洲国产欧美在线成人app| 亚洲黄页网在线观看| 色综合色综合久久综合频道88| 国产剧情久久久久久| 97在线看免费观看视频在线观看| 国产91精品网站| 国产日韩精品在线观看| 亚洲欧美福利视频| 91免费看视频.| 欧美在线观看网址综合| 国产视频欧美视频| 国产va免费精品高清在线观看| 青青在线视频一区二区三区| 亚洲大尺度美女在线| 一区二区三区国产视频| 成人动漫网站在线观看| 日本精品性网站在线观看| 亚洲女成人图区| 欧美另类暴力丝袜| 91av网站在线播放| 国产97色在线|日韩| 影音先锋欧美精品| 亚洲精品一区二区久| 日韩av在线网站| 911国产网站尤物在线观看| 成人性生交大片免费观看嘿嘿视频| 亚洲国产成人在线播放| 成人自拍性视频| 国产成人精品av| 欧美成人精品激情在线观看| 国产精品青青在线观看爽香蕉| 中文字幕一区二区三区电影| 色偷偷偷综合中文字幕;dd| 国产一区二区三区在线视频| 亚洲免费成人av电影| 精品美女久久久久久免费| 2020久久国产精品| 中文字幕亚洲一区二区三区| 亚洲老头老太hd| 青草热久免费精品视频| 国产欧美一区二区三区久久人妖| 欧美激情精品久久久久| 一区二区三区国产视频| 亚洲精品欧美日韩| 日本不卡高字幕在线2019| 欧美日韩激情美女| 欧美精品少妇videofree| 亚洲男人的天堂在线播放| 啪一啪鲁一鲁2019在线视频| 日韩精品视频免费专区在线播放| 免费av一区二区| 色偷偷噜噜噜亚洲男人的天堂| 亚洲一区中文字幕在线观看| 欧美一区二区视频97| 久久久久久国产| 日韩日本欧美亚洲| 综合136福利视频在线| 92裸体在线视频网站| 啊v视频在线一区二区三区| www.日韩.com| 亚洲综合成人婷婷小说| 欧美日韩亚洲91| 国产精品第一视频| 亚洲电影免费观看高清| 蜜月aⅴ免费一区二区三区| 欧美一级大片在线观看| 精品中文字幕视频| 亚洲精品成人久久电影| 欧美中文字幕在线播放| 日韩欧美中文字幕在线播放| 中文字幕亚洲精品| 国产精品自在线| 成人福利视频网| 亚洲国产91精品在线观看| 色综合久久精品亚洲国产| 国产成人精品a视频一区www| 欧美成人午夜视频| 亚洲欧美国产日韩中文字幕| 亚洲视频第一页| 成人黄色在线播放| 日韩电影免费观看在线观看| 国产成人综合久久| 伊人伊成久久人综合网小说| 国产精品第1页| 国产精品免费一区| 亚洲最大的av网站| 免费97视频在线精品国自产拍| 欧洲日韩成人av| 国产日韩精品视频| 国产精品久久久久久影视| 91高潮精品免费porn| 丝袜美腿精品国产二区| 国产欧美日韩精品专区| 欧美日韩亚洲系列| 国产亚洲一区二区在线| 操人视频在线观看欧美| 欧美性一区二区三区| 国产精品视频久久久| 久久久国产精品视频| 91在线色戒在线| 久久国产精品亚洲| 欧美有码在线观看| 日韩av在线不卡| 国产亚洲激情在线| 久久最新资源网| 欧美激情免费观看| 欧美在线一区二区三区四| 国产精品久久久久影院日本| 久久色精品视频| 777精品视频| 精品国产欧美一区二区五十路| 国产日韩精品电影| 亚洲欧美激情视频| 欧美日韩国产色| 日韩中文字幕精品视频| 国产成人精品久久二区二区91| 亚洲奶大毛多的老太婆| 亚洲国产精品嫩草影院久久| 精品在线观看国产| 国产精品久久久久久久久借妻| 一区二区三区精品99久久| 欧美精品video| 91精品视频在线| 亚洲欧美精品一区二区| 黑丝美女久久久| 日韩精品视频在线免费观看|