您的位置:首页 > 编程语言 > Java开发

Struts2整合Spring

2015-09-04 20:04 603 查看
在一个Maven的web项目中,整合struts2和spring开发,下面是一个正确的配置方法。在这里说一下因为spring支持注解和xml配置,所以struts2整合spring有两种方法,一个是注解配置方案,一个是xml配置方案。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	 <constant name="struts.objectFactory" value="spring" />
	 <package name="default" namespace="/" extends="json-default">
	 	<!-- struts2的配置方式 -->
	 	<action name="User_*" class="com.yc.ssm.vote.web.action.UserAction" method="{1}">
	 		<result name="success">success.jsp</result>
	 		<result name="fail">/page/{1}.jsp</result>
	 	</action>
	 	<!-- 下面的是struts2整合spring之后的配置方式 -->
	 	<action name="User_*" class="userAction" method="{1}">
	 		<result type="redirect"> /page/manage.jsp</result>
	 		<result name="fail"> /page/{1}.jsp</result>
	 	</action>
	 	
	 	<action name="Subject_*" class="subjectAction" method="{1}">
	 		<result>page/ajaxManage.jsp</result>
	 	</action>
	 	
	 </package>
	 
</struts>


1. 在maven项目中的pom.xml 中配置需要导入的jar包。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 	<modelVersion>4.0.0</modelVersion>
	<groupId>com.yc.ssm</groupId>
	<artifactId>Vote</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
<span style="white-space:pre">	</span><!-- 这里是jar包的版本的一些配置项 -->
	<properties>
		<project.builder.sourceEncoding>UTF-8</project.builder.sourceEncoding>
		<junit.version>4.12</junit.version>
		<web.version>3.0.0-beta-2</web.version>
		<log.version>1.7.12</log.version>
		<mybatis.version>3.3.0</mybatis.version>
		<mybatis.spring.version>1.2.2</mybatis.spring.version>
		<struts.version>2.5-BETA1</struts.version>
		<spring.version>4.1.6.RELEASE</spring.version>
		<mysql.version>5.1.34</mysql.version>
		<dbcp2.version>2.1</dbcp2.version>
	</properties>
<span style="white-space:pre">	</span><span style="font-family: Arial, Helvetica, sans-serif;"><!-- 这里是依赖的jar包的一些配置项 --></span>
	<dependencies>
		<!-- 测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

		<!--javaee -->
		<dependency>
			<groupId>jboss.web</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${web.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>jboss.web</groupId>
			<artifactId>jsp-api</artifactId>
			<version>${web.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- 日志 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${log.version}</version>
		</dependency>

		<!-- 数据库 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>oracle-driver</artifactId>
			<version>11g</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>${dbcp2.version}</version>
		</dependency>

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis.spring.version}</version>
		</dependency>

		<!-- struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>${struts.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-json-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-dojo-plugin</artifactId>
			<version>2.3.24</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>

		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>Vote</finalName>
	</build>
</project>
2. web.xml配置。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring.xml</param-value>
	</context-param>
	
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<init-param>
			<param-name>actionPackages</param-name>
			<param-value>com.yc.ssm.cinema.web.action</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


3. struts.xml配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	 <constant name="struts.objectFactory" value="spring" />
	 <package name="default" namespace="/" extends="json-default">
	 	<!-- struts2的配置方式 -->
	 	<action name="User_*" class="com.yc.ssm.vote.web.action.UserAction" method="{1}">
	 		<result name="success">/page/{1}.jsp</result>
	 		<result name="fail">/page/{1}.jsp</result>
	 	</action>
	 	<!-- 下面的是struts2整合spring之后的配置方式 -->
	 	<action name="User_*" class="userAction" method="{1}">
	 		<result type="redirect"> /page/manage.jsp</result>
	 		<result name="fail"> /page/{1}.jsp</result>
	 	</action>
	 	
	 	<action name="Subject_*" class="subjectAction" method="{1}">
	 		<result>page/ajaxManage.jsp</result>
	 	</action>
	 	
	 </package>
	 
</struts>


4. spring.xml配置。

如果是注解配置的话,在spring.xml中可以不配置action的映射关系,而只需要开启注解配置项就够了。

<?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: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.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd         http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd"><span style="white-space:pre">												</span><!-- 开启注解 --><span style="white-space:pre">		</span>
        <context:annotation-config />
	<context:component-scan base-package="com.yc.ssm.vote"/>	
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<!-- spring  dataSource -->
	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
		<property name="driverClassName" value="${jdbc.driver}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>
	<!-- mybatis与spring整合 -->
	<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="typeAliasesPackage" value="com.yc.ssm.vote.entity"/>
		<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
	</bean>
	<!-- 配置映射接口 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.yc.ssm.vote.mapper"/>
		<property name="sqlSessionFactoryBeanName" value="SqlSessionFactory"/>
	</bean>
	<!-- spring事物管理配置 -->
	<bean id="transactionManager" 
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<!-- 声明式事物 --><span style="white-space:pre">																	</span><tx:annotation-driven transaction-manager="transactionManager"/><span style="white-space:pre">											</span><!-- action  xml配置方式 --><span style="white-space:pre">																</span><bean id="userAction"<span style="white-space:pre">	</span>class="com.yc.ssm.vote.web.action.UserAction"/><span style="white-space:pre">										</span> <span style="font-family: Arial, Helvetica, sans-serif;"></beans></span>

5. action类

package com.yc.ssm.vote.web.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.yc.ssm.vote.entity.User;
import com.yc.ssm.vote.service.UserService;

@Controller("userAction")
public class UserAction implements ModelDriven<User> {
	private User user;
	private String errorMsg;
	
	@Autowired
	private UserService userService;

	public void setUser(User user) {
		this.user = user;
	}
	
	public String getErrorMsg() {
		return errorMsg;
	}

	public String login() {

		user = userService.login(user);
		if (user != null)
		{
			ActionContext.getContext().getSession().put("user", user);
			return "success";
		}
		errorMsg = "用户名或密码错误";
		return "fail";
	}

	@Override
	public User getModel() {
		user = new User();
		return user;
	}
}
6. 响应页面。

index.jsp

<pre name="code" class="html"><%@page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
	<jsp:forward page="/page/login.jsp" />
	<form action="user_login.action">
		用户名:<input type="text" name="用户名" /><br/>
		密码:<input type="password" name="密码"/><br/>
		<input type="submit" value="登陆"/> 
	</form>
</body>
</html>



success.jsp

<%@page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
	<h1>登陆成功.!</h1>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: