struts2+spring+jpa+dwr

struts2+spring+jpa+dwr


在國內,一些中小公司或外包公司對SSH2的需求還是比較大的,所以這裏寫一個SSH2+AJAX的配置,下一章將介紹一個通用DAO的配置。

接下來進入主題

  1:建立一web工程

  2:首先配置STRUTS2環境,需求包可以到apache的官方網站,我這裏用的是2.1.6的版本,所以具體的需求包有

    --struts2

      --lib

        --struts2-core-2.1.6.jar

        --xwork-2.1.2.jar

        --ognl-2.6.11.jar

        --freemarker-2.3.13.jar

        --commons-fileupload-1.2.1.jar

        --struts2-spring-plugin-2.1.6.jar

  其中commons-fileupload-1.2.1.jar在2.1.6中是必須的,否則啓動的時候回報異常;struts2-spring-plugin-2.1.6.jar這個文件是用於和spring整合用的,包準備好了後就配置相應的配置,打開web.xml文件,加入以下內容:

       <filter>
          <filter-name>struts2</filter-name>
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
       </filter>

      <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
       </filter-mapping>

  其中FilterDispatcher是struts2的主啓動類,此過濾器攔截所有的URL請求;然後在src目錄下建立struts.xml文件,加入以下內容:

    <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
      <struts>
          <constant name="struts.objectFactory" value="spring" />
          <constant name="struts.devMode" value="true" />

      </struts>

  3:接下來就是spring的配置了,同樣是到spring官方將支持包下載,可以使用一個單jar包,spring.jar文件即可;包準備好後就要修改配置文件了,打開web.xml文件,在其中添加一個監聽器程序,代碼如下:

     <context-param>
        <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-main.xml</param-value>
     </context-param>
     <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>

  完成後就和struts2集成好了,最後是要配置JPA的內容了,這裏我們用的是hibernate的JPA實現包,到JBOSS官方下載對應的包,有hibernate.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar,hibernate-entitymanager.jar,javassist.jar,jboss-archive-browsing.jar;需求包解決後開始配置文件,由於我們使用的是和spring整合,則重點配置在spring中,而JPA部分只配置一些基本元素;首先打開spring配置文件,往裏添加如下代碼:

  <!-- 數據源配置 -->

  <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
          <property name="url" value="jdbc:oracle:thin:@localhost :1521:ORCL" />
          <property name="username" value="hlin" />
          <property name="password" value="hlin" />
   </bean>

  <!-- 實體工廠配置 -->
   <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
          <property name="dataSource" ref="dataSource" />
          <property name="jpaVendorAdapter">
            <bean
                  class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                  <property name="database" value="ORACLE" />
                  <property name="showSql" value="true" />
                  <property name="generateDdl" value="false" />
             </bean>
          </property>
      </bean>

  <!--事物管理-->

  <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager">
          <property name="entityManagerFactory" ref="entityManagerFactory" />
     </bean>
     <!--通過註解的方式實現事物注入-->
     <tx:annotation-driven transaction-manager="transactionManager" />

  配置好後還要將ORACLE數據庫的驅動程序加入到classpath中;再到src目錄下建立一個目錄,名稱爲META-INF,然後再到裏面建立一文件,名稱爲persistence.xml,裏面內容如下:

  <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

       <persistence-unit name="helpPU" transaction-type="RESOURCE_LOCAL">
       </persistence-unit>
    </persistence>

  4:配置dwr,直接到官方網站下載編譯後的包dwr.jar文件,然後打開dwr.jar將裏面的dwr.xml文件拖出放到WEB-INF目錄下,然後將dwr.xml文件的<allow></allow>之間的內容統統刪除,再打開web.xml文件,添加如下代碼:

  <!-- dwr配置文件 -->
   <servlet>
      <servlet-name>dwr-invoke</servlet-name>
      <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
      <init-param>
       <param-name>debug</param-name>
       <param-value>true</param-value>
      </init-param>
      <!-- 日誌顯示等級 -->
      <init-param>
         <param-name>logLevel</param-name>
         <param-value>warn</param-value>
      </init-param>
      <!-- 不同域的session安全配置 -->
      <init-param>
         <param-name>crossDomainSessionSecurity</param-name>
         <param-value>false</param-value>
      </init-param>
      <init-param>
         <param-name>allowScriptTagRemoting</param-name>
         <param-value>true</param-value>
      </init-param>
   </servlet>
   <servlet-mapping>
        <servlet-name>dwr-invoke</servlet-name>
       <url-pattern>/dwr/*</url-pattern>
   </servlet-mapping>

   <!-- 解決JPA延遲加載的問題 -->
   <filter>
      <filter-name>openEntityManagerInViewFilter</filter-name>
      <filter-class>
       org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter

    </filter-class>
   </filter>
       <filter-mapping>
          <filter-name>openEntityManagerInViewFilter</filter-name>
          <url-pattern>/dwr/*</url-pattern>
      </filter-mapping>

  最後一個過濾器是爲防止session提前關閉而設置的。

  最後還要將常用的一些jar包支持設置到classpath路徑中,在此就完成了SSH2+AJAX的配置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章