直接码代码
项目目录
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进行测试