jQuery & DWR & SSH2

來源:互聯網
上載者:User

今天經過不懈的努力終於弄好了一個SSH2+DWR+jQuery的例子,不容易,畢竟我以前從來沒有接觸過這種形式的東西,我要好好的記下來。

首先是SSH2,也就是說Spring+Struts2+Hibernate。這是目前比較流行的Java Web應用開發模式。這個簡單,關鍵是確保你的應用的類庫千萬不能衝突,否則的話光是找錯就能累死你,因為這三個架構都使用了很多第三方jar包,這些jar包在三個架構裡版本不同,有時候會衝突。所以先給大家把環境和jar包列表弄出來。

環境:Spring2.5.6+Struts2.1.8+Hibernate3.5.2

Jar包列表:

  • antlr-2.7.6.jar;
  • aspectjrt.jar
  • aspectweaver.jar
  • c3p0-0.9.1.2.jar --- 這是c3p0資料來源的jar包,你可以選擇DBCP,但是我不建議用。
  • cglib-nodep-2.1_3.jar
  • common-annotations.jar
  • commons-collections-3.1.jar
  • commons-fileupload-1.2.1.jar
  • commons-logging.jar
  • dom4j-1.6.1.jar
  • dwr-1.1.1.jar --- DWR的驅動包
  • freemarker-2.3.15.jar
  • hibernate3.jar
  • javassist-3.9.0.GA.jar
  • jta-1.1.jar
  • log4j-1.2.15.jar
  • ognl-2.7.3.jar
  • ojdbc5.jar --- 這是Oracle的jdbc驅動包
  • slf4j-api-1.5.8.jar
  • slf4j-log4j12-1.5.0.jar
  • spring.jar
  • spring-aop.jar
  • spring-beans.jar
  • spring-context.jar
  • spring-context-support.jar
  • spring-core.jar
  • spring-jdbc.jar
  • spring-orm.jar
  • spring-tx.jar
  • spring-web.jar
  • struts2-core-2.1.8.1.jar
  • struts2-spring-plugin-2.1.8.1.jar
  • xwork-core-2.1.6.jar

兄弟們自己把這些jar包搞定,直接就可以整合SSH2了,簡單的用腳後跟都能做出來,用不著像網上說的那樣還分步驟。至於設定檔就不要我寫了把,一共有兩個,一個是Spring的設定檔applicationContext.xml,主要是配資料來源、SessionFactory、TransactionManager。然後根據你的習慣配置如何管理系統中用的bean,如果你喜歡用<bean>節點配,那你就寫設定檔,如果你喜歡用註解配,那就開啟組件掃描<context:component-scan>,同時對於TransactionManager的配置也是一樣,看你喜歡設定檔還是註解,如果用註解,那麼開啟註解驅動<tx:annotation:driven>,簡單吧。第二個是struts.xml,既然和Spring整合,那麼Action的建立當然應該交給Spring,所以必須配一個常量【struts.objectFactory】,至於其他的配package和action,用腳後跟都會吧。至於Hibernate的對應檔,還用說嗎?

 

下面才是重點,也就是如何在你的系統中同時使用jQuery和DWR。說實話,到目前為止我也沒有明白這兩個傢伙的側重點到底是啥,有啥不同之處,應用情境是什麼,還要再學習學習才行。但是從網上的資料來看,前者比較側重於介面,有一大票的控制項,後者好像更側重與背景互動。我只能說,我還不確定,也許不對,大家不要被我誤導。

 

首先是將DWR引入到應用中來,這個我已經討論過了,可以看另一篇Blog。但是這裡需要說明的是,由於整個能夠應用是基於Spring架構管理bean的,所以DWR就不能自己建立JavaBean了,也就是說DWR需要從Spring容器個取得bean。為了實現這個目標,在dwr.xml設定檔中,我們應該這麼配:

<create creator="spring" javascript="ServiceBean" >

    <param name="beanName" value="serviceBean" >

</create>

而通常情況下,我們往往配置成:

<create creator="new" javascript="ServiceBean" >

    <param name="class" value="xxx.yyy.zzz.ServiceBean" >

</create>

看出區別了嗎?其中第一個配置中的value屬性的值需要特別注意,這個值一定是我們可以通過Spring的getBean(String 參數值)方法得到Bean的那個字串參數值,否則一定不行。

 

其次,是修改web.xml將dwr的servlet配置起來,包括那些參數,不再贅述。

 

第三步,在WebRoot下建一個目錄用來存放js檔案和css檔案,我估計是不能放在WEB-INF下的,否則從jsp檔案中無法直接引用。

 

第四步,將jQuery的js檔案down下來,如果你需要jQuery的ui,那麼除了jQuery的核心js以外,還要jquery-ui.min.js和jquery-ui.css,因為前者需要後面的css檔案才能運行。

 

第五步,在你的jsp檔案中,首先按照dwr的規範將engine.js和util.js加進來,如果你需要調用JavaBean,比如上面的ServiceBean,那麼需要將它也加進來。src屬性可以參照上一篇Blog。

 

第六步,將jQuery的js加進來,寫在dwr的js之後,一定是之後。至少在我這裡是這樣的,我把他們掉了個個,結果發現使用DWRUtil的時候報錯。

 

第七步,由於jQuery和dwr的uitl衝突,所以在寫script方法時使用這種方式防止衝突:

var j = jQuery.noConflict();

然後jQuery定義的方法中的所有【$】符號用j代替。

 

至此,整合完畢,當然了css檔案的匯入也是必須的,我就沒寫了。記住一點,因為這些檔案都被引入到jsp中,所以為了讓你的頁面能夠引用它們,一定要加上${pageContext.request.contextPath},否則不行。還有就是如果發現某些css沒有效果,檢查一下這些css檔案是否通過url引用了某些外部的資源,比如說圖片等等,改一下就行了。

我的頁面如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.