直接码项目
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的过滤器
<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