Spring与Struts2 的整合使用

项目结构

  

再Struts2 中(还没有与Spring整合时),它创建Action类的依据

<action name="second" class="com.SecondController">
  <result name="success">/index.jsp</result>
</action>

同时还有一个点需要注意的就是,struts会每次请求时自动实例化一个新的Action类的对象

  导进相关的依赖包:pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com</groupId>
<artifactId>spring-web-struts2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--打成war包-->
<packaging>war</packaging> <dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.2.RELEASE</version>
</dependency> <dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.12</version>
</dependency> <dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.12</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warSourceDirectory>web</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>

struts2 与spring整合的步骤

  1:配置监听器ContextLoaderListener,以便创建出Spring的容器对象web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--配置监听器ContextLoaderListener,以便创建出Spring的容器对象-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--访问的配置路径-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationCtx.xml</param-value>
</context-param> <!--struts2过滤器-->
<filter>
<filter-name>sss</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sss</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

  2:添加struts-spring的依赖,以便改变默认的Struts的实例化Action类规则(上面已配置)

  1. 因为读取到的值就是bean的名字

  2. 利用WebApplicationContextUtils的方法就可以实例化action类

  3. 实例化action类的时候,就可以注入依赖的Service类型

     <dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.12</version>
</dependency>

  创建UserDao接口

 package dao;

 public interface UserDao {
void insert();
}

  实现UserDao:UserDaoImpl

 package dao;

 public class UserDaoImpl implements UserDao {
public void insert() {
System.out.println("dao insert----");
}
}

  创建UserService接口

 package service;

 public interface UserService {
void insert();
}

  UserServiceImpl

 package service;

 import dao.UserDao;

 public class UserServiceImpl implements UserService {
private UserDao userDao ; public UserDao getUserDao() {
return userDao;
} public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public void insert() {
userDao.insert();
}
}

  把UserDaoImpl和UserServiceImpl让Spring管理:applicationCtx.xml

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="userDao" class="dao.UserDaoImpl"></bean>
<bean id="userService" class="service.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean> <!--记得设定Action(也就是Controller)的设置,要设置为非单利,一般就设置为prototype-->
<bean id="sencondController" class="com.SecondController" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
</beans>

  配置struts并且让Spring管理

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

 <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="demo" extends="struts-default">
<action name="second" class="sencondController">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

  SecondController

 package com;

 import service.UserService;

 public class SecondController {

     public SecondController() {
System.out.println("second contructor-----");
} private UserService userService; public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} public String execute(){
System.out.println("execute----");
userService.insert();
return "success";
} }

个人笔记,请勿喷

最新文章

  1. 必应词典3.2去广告备忘笔记(转摘于roustar31)
  2. Android 的系统架构
  3. TestNg测试框架使用笔记
  4. WCF服务在高并发情况下报目标积极拒绝的异常处理 z
  5. EXPDP
  6. 《Python基础教程(第二版)》学习笔记 -&gt; 第十章 充电时刻 之 标准库
  7. Nginx缓存配置及nginx ngx_cache_purge模块的使用
  8. DOM对象控制HTML无素——详解3
  9. 【转】轻量级文本编辑器,Notepad最佳替代品:Notepad++--不错
  10. View Controller 生命周期的各个方法的用法
  11. 柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装、配置与监控
  12. STM32串口乱码
  13. SQL模糊查询条件的四种匹配模式
  14. .net core使用orm操作mysql数据库
  15. 20155324 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告
  16. protobuf shutdownprotobuflibrary的时候crash,释放的指针出错
  17. centos7 mysql数据库安装和配置(转, 未验证)
  18. js中将斜杠\替换的方法
  19. OpenCV图像处理篇之阈值操作函数
  20. IOS 文件解析

热门文章

  1. elementUI 的el-pagination 分页功能
  2. Java的部分问题和小结
  3. mysql导入.csv文件出错
  4. 【TJOI2018】教科书般的亵渎
  5. SQL的判断重复新增或者修改
  6. H5新属性 contenteditable
  7. 分布式项目中增加品牌前端页面出现Uncaught Error: [$injector:modulerr] bug后的原因以及改正方式
  8. Delphi GDI+ 安装方法
  9. flink详细介绍
  10. centos 下安装 shpinx2.1.7 记录