SSH框架整合II之注解(个人笔记)

之前写了一篇关于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>

需要注意: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类利用注解方式提升效率,减少了各个配置文件的代码量!












猜你喜欢

转载自blog.csdn.net/GJ454221763/article/details/80377806
今日推荐