struts2和spring整合,基于注解的方法

直接码代码

项目目录


1.导入struts和spring各自需要的jar包, 再导入两者整合需要的jar包

2.UserDao.java

package com.ssh.dao;

import org.springframework.stereotype.Repository;

@Repository 
public class UserDao {

    public void add() {
        System.out.println("userDao ......");
    }

}

UserServiece.java

package com.ssh.service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.ssh.dao.UserDao;

//@Service(value="userService")--value="userService"可不要,因为UserServiece的默认bean的name为小写字母开头的类名
@Service
public class UserService {
	
    @Resource
    private UserDao userDao;

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add() {
        System.out.println("userService ......");
        userDao.add();
    }

}

UserAction.java

package com.ssh.action;

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

import com.opensymphony.xwork2.ActionSupport;
import com.ssh.service.UserService;

@Controller
@Scope("prototype")
public class UserAction extends ActionSupport {
	
    @Autowired
    private UserService userService;

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @Override
    public String execute() throws Exception {

        System.out.println("userAction .......");
        // 调用userService中方法发
        userService.add();

        return NONE;    // 表示返回到任何页面中去
    }

}

2.三个配置文件

struts对应的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>
	<!-- 在struts.xml中指定objectFactory对象工厂为spring,即action的创建交由spring进行 -->
	<constant name="struts.objectFactory" value="spring"/>
	
	<package name="demo1" extends="struts-default" namespace="/">
        <!-- class属性是从Spring IoC中获取的 -->
        <action name="userAction" class="userAction">
        </action>

    </package>
</struts>

spring对应的applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!-- 引入的Spring的约束,已经很全了 -->
<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/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- 开启注解扫描 -->
    <context:component-scan base-package="com.ssh">  
        <!-- 不扫描controller包下的UserController类,既去除注解   -->
        <!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> -->  
    </context:component-scan>
    <!-- userDao -->
    <!-- <bean id="userDao" class="com.ssh.dao.UserDao"></bean> -->

    <!-- userService -->
    <!-- <bean id="userService" class="com.ssh.service.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean> -->
    
    <!-- 配置action的对象 -->
    <!-- 注意action是多实例的,因此我们这里把scope配置为prototype的 -->
    <!-- <bean id="userAction" class="com.ssh.action.UserAction" scope="prototype">
        <property name="userService" ref="userService"></property>
    </bean> -->
     

</beans>
web.xml
<web-app>
	<!-- 1.配置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>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>        
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 	
 	<!-- spring配置文件对应的参数,如果applicationContext.xml放在/WEB-INF/目录下,可以忽略;若不是,则需要配置 -->
 	<!-- <context-param>
	 <param-name>contextConfigLocation</param-name>
	 <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
	</context-param> -->
	<!-- 2.配置Spring的监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="userAction">点击后会,发送action为userAction的请求,由拦截器拦截,跳转到指定页面</a>
</body>
</html>

运行index.jsp进行测试

原理和struts2和spring整合,基于xml的方法一样

猜你喜欢

转载自blog.csdn.net/yiguang_820/article/details/80782071