在国内,一些中小公司或外包公司对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的配置。