溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何整合SSH-DWR等技術(shù)

發(fā)布時間:2021-12-24 10:25:41 來源:億速云 閱讀:126 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“如何整合SSH-DWR等技術(shù)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“如何整合SSH-DWR等技術(shù)”這篇文章吧。

ssh整合步驟:

第一步:添加支持

1:建表、配置數(shù)據(jù)庫連接(切換到database視圖或hibernate視圖)

2:循序添加hibernate、spring、struts支持(切換到j(luò)2ee視圖,建web工程,

添加hibernate、spring、struts(myeclipse菜單-->add project-->hibernate、spring、struts)

說明:在整合了spring時候hibernate無需創(chuàng)建sessionfactory也就說在添加hibernate支持時候不

需要勾上那個創(chuàng)建sessionfactory的勾

3:生成pojo類,創(chuàng)建dao包將DAO類放在一起(切換到database視圖或hibernate視圖找到相應的數(shù)據(jù)庫中的表右鍵:Hibernate Reverse

Engineering)

選項說明:Java src folder 選擇所在項目的src目錄 下面多選框下面前三個都勾上

對于pojo類的映射文件配置。需注意表級聯(lián)問題,未配置好可能導致某些操作失敗(操作主表時,從表也同時操作.):在映射文件后面的set 設(shè)置cascade 屬性。如:

cascade = save-update(級聯(lián)添加) 同時添加主表和n個從表 、cascade = all 都級聯(lián)

4:如果涉及到DWR 那么還得把DWR開發(fā)包拷在lib下,dwr.xml、dwr20.dtd(提示文件)復制到WEB-INF

目錄下(至于怎么配置,下面我們詳細貼出)

第二步:后臺業(yè)務(wù)、.xml文件配置(如果是用MyEclipse6.5 開發(fā)的可能會出現(xiàn)個金典異常,解決辦法就是 選擇項目->Build Path->Configure

->Libraries 中Remove asm-2.2.3.jar 開發(fā)包 ,再lib下delet)

1:開始寫業(yè)務(wù)層,抽取接口類。寫dao層。因為業(yè)務(wù)層是調(diào)用dao層的,所以先把業(yè)務(wù)寫好了就算完成了第二

步就算完成半了。

2:可以選擇配置web.xml文件。

1)為spring支持的applicationContext.xml文件指定路徑配置(默認會認為在WEB-INF下面)

代碼:

    <context-param>  <param-name>contextConfigLocationparam-name>  <param-value>classpath:app*.xmlparam-value> context-param>

2)為了避免在事務(wù)還沒完成session就關(guān)閉的情況我們可以設(shè)置OpenSessionInViewFilter過濾器。這是

涉及到懶加載的問題。其實還有幾種常見的方法可以避免。如:在pojo類的主鍵映射文件中的set

添加一個屬性為 lazy="false" (立即加載關(guān)聯(lián)表,默認為true) 還有種就是用代碼控制立即加載關(guān)鍵

字 fetch。如:join fetch from A a join fetch a.

   (映射可以是所有文件)  <filter>  <filter-name>openssionfilter-name>  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilterfilter-class> filter>

3)為了解決編碼問題的過濾器(映射可以是所有文件)

<filter>  <filter-name>encodingfilter-name>  <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class> filter>

4)配置文件加載的監(jiān)聽器 (沒有映射)

<listener>  <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class> listener>

5)配有DWR就必須為之注冊

  <servlet> <servlet-name>dwrservlet-name> <servlet-class>org.directwebremoting.servlet.DwrServletservlet-class> <init-param>  <param-name>debugparam-name>  <param-value>trueparam-value> init-param>  servlet>  <servlet-mapping> <servlet-name>dwrservlet-name> <url-pattern>/dwr/*url-pattern>  servlet-mapping>

說明:如果是整合ssh3 時候就可能在DWR測試時候會報錯因為ssh3的核心過濾器會將其攔截,導致

測試時候報錯。解決辦法我們將在下一篇ssh3整合流程分析講解給出具體解決方案

(上面的映射文件可以是所有文件)

3:現(xiàn)在可以創(chuàng)建action類了、及配置??刂?/p>

添加了struts支持就會在web.xml中自動注冊核心控制器 ActionServlet

這里涉及到核心控制器的工作流程了。在action中會重寫execute方法。簡單說客戶端發(fā)送HTTP請求,都會被核心控制器攔截

核心控制器請求填充ActionForm.再轉(zhuǎn)到Action.在Action中我們只要將form中的信息填充到

我們自己的ActionForm中就可以了如: 部門表Form類 部門Form(將form中信息填充到該form中) = (部門表Form) form;

要說的幾點需注意:

1)注冊頁面:注意action是.do結(jié)尾

2)寫類,繼承ActionForm(FormBean),界面屬性,并生成set/get方法

(類型可以是: 8種基本數(shù)據(jù)類型級包裝類和它們組成的數(shù)組。 還可以 String,java.sql.Date及其數(shù)組)

3)寫類,繼承Action,重寫execute方法,調(diào)用業(yè)務(wù) ??梢砸粋€action類處理一個業(yè)務(wù),也可在一個

action類中處理多個業(yè)務(wù),就必須這樣幾個地方。 在頁面action .do后面可添加一個參數(shù)p="xx",

在struts-config.xml-> action-mapping->action 中添加屬性 parameter="p" 在請求的action類中直接

獲取參數(shù)p的值,在調(diào)用對應的方法。

4)在WEB-INF建struts-config.xml文件,注冊actionForm,action

并確定界面/actionForm/Action三者的關(guān)系.

action具體配置文件struts-config.xml:

代碼:

1.配置actionForm

<form-beans>   <form-bean name="" type="">   form> form-beans>

2.配置action

<action-mappings>     <action path="/emp" parameter="" type="action類/代理">     action>  action-mappings>

說明:/emp jsp頁面中action 的 emp.do? 代理類:type="org.springframework.web

.struts.DelegatingActionProxy"

4:配置spring的applicationContext.xml

添加了spring支持的主要特點是IOC(控制反轉(zhuǎn),依賴注入),AOP(面向切面編程)大大降低

層與層之間的耦合度。就關(guān)系的事務(wù)了。要做的***件事就是換文件頭子。

1)換文件頭子

<?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:util="http://www.springframework.org/schema/util"  xmlns:p="http://www.springframework.org/schema/p"  xmlns:aop="http://www.springframework.org/schema/aop"  xmlns:tx="http://www.springframework.org/schema/tx"  xsi:schemaLocation="   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

2)dao層bean已經(jīng)自動生成了,需要創(chuàng)建一下bean。

 如:   <bean id="tsaleformService" class="com.service.TSaleformServiceImpl">      <property name="tsaleformDAO" ref="TSaleformDAO">property>      <property name="tsDetail3DAO" ref="TSaleformDetailDAO">property>  bean>     如:   <bean name="/emp" class="com.struts.action.SaleformShowAction">      <property name="itSaleformService" ref="tsaleformService">property>  bean>       <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">     <property name="sessionFactory" ref="sessionFactory">property>  bean>

說明:sessionFactory 是自動生成的下面bean id.

<bean id="sessionFactory"   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   <property name="configLocation"    value="classpath:hibernate.cfg.xml">   property>  bean>      <tx:advice id="mycy">       <tx:attributes>          <tx:method name="*"/>       tx:attributes>     tx:advice>        <aop:config>          <aop:advisor advice-ref="mycy" pointcut="execution(* com.service.*.*(..))"/>    aop:config>

說明:com.service.*.*(..) com包下.service業(yè)務(wù)層包下.所有類.所有方法(..)

5: 現(xiàn)在該配置DWR了配置文件 dwr.xml。

1)將

文件打開 配置為:

"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"    "dwr20.dtd">

說明:就是將"dwr20.dtd" 中前面那段"http:...dwr20.dtd" 什么的剪切掉 剩下就"dwr20.dtd"就ok

2)

<dwr>        <allow>           <convert match="com.pojos.*" converter="bean">convert>           <create javascript="myjs" creator="spring">             <param name="beanName" value="tsaleformService">param>           create>        allow>     dwr>

說明:需導入dwr.dtd 文件用于提示用,記得話 不要當然沒問題

com.pojos.* 所有pojo類 , converter="bean" 固定的,bean 也可以換成hibernate,

javascript="myjs" 是自定義的,creator="spring" 固定的,param name="beanName"固

定的,value="tsaleformService"中 tsaleformService 是applicationContext.xml中

下面的對應的業(yè)務(wù)層bean 的id 如上id。

第三步:現(xiàn)在就關(guān)系到如何進行DWR測試。在瀏覽器中在工程名下直接/dwr .dwr 是剛才在web.xml

中所配置的映射名 如上:dwr。

測試成功將會出現(xiàn)你的自定義 "myjs" 鏈接 。進入就可進行測試業(yè)務(wù)層事務(wù)了.

這段總結(jié)是我在一個上午總結(jié)的總結(jié)的不是很專業(yè)、很全,我也是帶著復習的心情邊開著電腦對著源碼思索一步步、一個個字打出來的!

以上是“如何整合SSH-DWR等技術(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

ssh
AI