struts2和spring整合,基于xml的方法

直接码项目

1.项目目录


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

2.UserDao.java

package com.ssh.dao;

public class UserDao {

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

}

UserService.java

package com.ssh.service;

import com.ssh.dao.UserDao;

public class UserService {

    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 com.opensymphony.xwork2.ActionSupport;
import com.ssh.service.UserService;

public class UserAction extends ActionSupport {

    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;    // 表示返回到任何页面中去
    }

}

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>
	<!-- 在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>

applicationContext.xml(默认放在WEB-INF目录下,如果放在其他位置需要在web.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">

    
    <!-- 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中配置struts2的过滤器

扫描二维码关注公众号,回复: 1891874 查看本文章
<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>

4.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>

5.测试

运行index.jsp,点击超链接,跳转到空白页

控制台打印如下结果


6.整合Struts和Spring的基本思路是将Action生命周期由原本的Struts进行管理,交由Spring进行管理



参考:https://www.cnblogs.com/tuhooo/p/6491906.html

猜你喜欢

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