在國內,一些中小公司或外包公司對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的配置。