之前写了一篇关于SSH框架的整合方法,流程比较复杂,使用起来也是相当麻烦,所以今天记录一下简便方式的SSH框架整合。
废话不多说,下面就是关于SSH具体搭建流程!
首先在MySQL中新建table user,其属性包含:
uid int primary key auto_increment
uname varchar(20) not null
upwd varchar(20) not null
uenjoy varchar(50) not null
首先创建一个Web Project项目,在WebRoot下创建user文件夹用来保存jsp文件,在user文件夹下新建main.jsp其代码如下:
注意:jsp文件需先导入jstl核心标签库文件--<%@taglib prifix="alt+/" uri="alt+/"%>
<h1><a href="<c:url value='/getAll.action'/>">获取所有用户信息</a></h1>
<table>
<tr>
<th>userID</th>
<th>count</th>
<th>password</th>
<th>enjoy</th>
</tr>
<c:forEach items="${requestScope.list}" var="user">
<tr>
<td>${user.uid}</td>
<td>${user.uname}</td>
<td>${user.upwd}</td>
<td>${user.uenjoy}</td>
</tr>
</c:forEach>
</table>
准备好Struts2与Spring的连接插件:struts2-spring-plugin-2.3.1.1.jar,作用:关联Struts2与spring
准备工作完成之后,开始对SSH进行配置:
1、对Struts2的配置
配置Struts2完成后,我们会发现Web-INF文件夹下的内容会自动配置Struts2的过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、对Hibernate的配置
接下来的配置注意sessionFactory选项不要勾选,sessionFactory会通过后面的Spring进行配置!
3、对Spring的配置
以上需要勾选5个选项,上图4个+SpringWeb选项,接下来选择配置sessionFactory,配置成功之后会在applicationContext.xml中看到以下几行代码(关联hibernate文件位置的代码):
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
需要注意:Struts2+Hibernate+Spring的核心jar包一定要导入到项目中(默认文件夹:lib)
4、在web.xml中配置spring
<!-- 声明spring的配置文件位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
5、 struts.xml中声明使用spring管理action对象
<constant name="struts.objectFactory" value="spring"/>
<constant name="struts.objectFactory.spring.autoWire" value="name"/>
6、导入提前准备好的连接插件struts2-spring-plugin-2.3.1.1.jar并进行buildpath,然后部署项目到Tomcat,进行阶段性测试,测试上述步骤是否配置成功!
-------------------------测试专用分割线-------------------------
7、通过MyEclipse的反向工程生成user的entity和dao持久层工具类
实体类反向工程生成之后applicationContext.xml中会增加如下代码:
<bean id="UserDAO" class="com.aa.entity.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
8、抽取UserDAO实体类的接口(项目-右键-refact-Extract interface)
9、创建action类,代码如下:
package com.aa.action;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.aa.dao.UserDAOInterface;
import com.aa.entity.User;
@Controller("userAction")
public class UserAction {
private int uid;
private String uname;
private String upwd;
private String uenjoy;
private List<User> list;
@Autowired
private UserDAOInterface userDAOInter;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public String getUenjoy() {
return uenjoy;
}
public void setUenjoy(String uenjoy) {
this.uenjoy = uenjoy;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
public UserDAOInterface getUserDAOInter() {
return userDAOInter;
}
public void setUserDAOInter(UserDAOInterface userDAOInter) {
this.userDAOInter = userDAOInter;
}
//获取所有用户方法
public String getAllMethod(){
list=userDAOInter.findAll();
return "success";
}
}
10、配置struts.xml文件
<package name="pkg1" extends="struts-default" namespace="/" >
<action name="getAll" class="userAction" method="getAllMethod">
<result name="success">/user/main.jsp</result>
</action>
</package>
11、配置applicationContext.xml文件(非自动生成部分)
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
">
<!-- 以上配置中xml命名空间要增加3项,分别是:context,aop,tx -->
<!--使用context指令 自动扫描action -->
<context:component-scan base-package="com.aa"/>
<!--配置spring时自动生成,作用:制定hibernate配置文件位置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 创建事物管理bean -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 使用tx指令创建一个事务装备 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 使用aop指令把事务装备和目标对象关联 -->
<aop:config>
<aop:pointcut expression="execution(* com.aa.dao..*.*(..))" id="txpointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
</aop:config>
<!-- 反向工程时自动生成,作用:指定实体类的sessionFactory属性 -->
<bean id="UserDAO" class="com.aa.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>
12、移除核心jar包cglib-2.2.jar
Remove From Build Path,然后删除对象jar包
此步骤要根据实际情况进行,若发布项目console无错误信息,可直接忽略此步!
13、发布项目进行测试
地址栏输入要访问的地址:
点击超链接获取所有用户信息:
大功告成!
小记:在applicationContext.xml中配置事务装备,action类利用注解方式提升效率,减少了各个配置文件的代码量!