Spring与Struts2 的整合使用

项目结构

  

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

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

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>com</groupId>
  8. <artifactId>spring-web-struts2</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10. <!--打成war包-->
  11. <packaging>war</packaging>
  12.  
  13. <dependencies>
  14. <dependency>
  15. <groupId>javax.servlet</groupId>
  16. <artifactId>javax.servlet-api</artifactId>
  17. <version>3.1.0</version>
  18. <scope>provided</scope>
  19. </dependency>
  20.  
  21. <dependency>
  22. <groupId>org.springframework</groupId>
  23. <artifactId>spring-context</artifactId>
  24. <version>5.0.2.RELEASE</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>spring-web</artifactId>
  29. <version>5.0.2.RELEASE</version>
  30. </dependency>
  31.  
  32. <dependency>
  33. <groupId>org.apache.struts</groupId>
  34. <artifactId>struts2-core</artifactId>
  35. <version>2.5.12</version>
  36. </dependency>
  37.  
  38. <dependency>
  39. <groupId>org.apache.struts</groupId>
  40. <artifactId>struts2-spring-plugin</artifactId>
  41. <version>2.5.12</version>
  42. </dependency>
  43. </dependencies>
  44.  
  45. <build>
  46. <plugins>
  47. <plugin>
  48. <artifactId>maven-war-plugin</artifactId>
  49. <version>2.2</version>
  50. <configuration>
  51. <warSourceDirectory>web</warSourceDirectory>
  52. </configuration>
  53. </plugin>
  54. </plugins>
  55. </build>
  56. </project>

struts2 与spring整合的步骤

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1">
  6. <!--配置监听器ContextLoaderListener,以便创建出Spring的容器对象-->
  7. <listener>
  8. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  9. </listener>
  10. <!--访问的配置路径-->
  11. <context-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:applicationCtx.xml</param-value>
  14. </context-param>
  15.  
  16. <!--struts2过滤器-->
  17. <filter>
  18. <filter-name>sss</filter-name>
  19. <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  20. </filter>
  21. <filter-mapping>
  22. <filter-name>sss</filter-name>
  23. <url-pattern>/*</url-pattern>
  24. </filter-mapping>
  25. </web-app>

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

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

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

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

  1. <dependency>
  2. <groupId>org.apache.struts</groupId>
  3. <artifactId>struts2-spring-plugin</artifactId>
  4. <version>2.5.12</version>
  5. </dependency>

  创建UserDao接口

  1. package dao;
  2.  
  3. public interface UserDao {
  4. void insert();
  5. }

  实现UserDao:UserDaoImpl

  1. package dao;
  2.  
  3. public class UserDaoImpl implements UserDao {
  4. public void insert() {
  5. System.out.println("dao insert----");
  6. }
  7. }

  创建UserService接口

  1. package service;
  2.  
  3. public interface UserService {
  4. void insert();
  5. }

  UserServiceImpl

  1. package service;
  2.  
  3. import dao.UserDao;
  4.  
  5. public class UserServiceImpl implements UserService {
  6. private UserDao userDao ;
  7.  
  8. public UserDao getUserDao() {
  9. return userDao;
  10. }
  11.  
  12. public void setUserDao(UserDao userDao) {
  13. this.userDao = userDao;
  14. }
  15.  
  16. public void insert() {
  17. userDao.insert();
  18. }
  19. }

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

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

  配置struts并且让Spring管理

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!DOCTYPE struts PUBLIC
  4. "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
  5. "http://struts.apache.org/dtds/struts-2.5.dtd">
  6.  
  7. <struts>
  8.  
  9. <package name="demo" extends="struts-default">
  10. <action name="second" class="sencondController">
  11. <result name="success">/index.jsp</result>
  12. </action>
  13. </package>
  14. </struts>

  SecondController

  1. package com;
  2.  
  3. import service.UserService;
  4.  
  5. public class SecondController {
  6.  
  7. public SecondController() {
  8. System.out.println("second contructor-----");
  9. }
  10.  
  11. private UserService userService;
  12.  
  13. public UserService getUserService() {
  14. return userService;
  15. }
  16.  
  17. public void setUserService(UserService userService) {
  18. this.userService = userService;
  19. }
  20.  
  21. public String execute(){
  22. System.out.println("execute----");
  23. userService.insert();
  24. return "success";
  25. }
  26.  
  27. }

个人笔记,请勿喷

Spring与Struts2 的整合使用的更多相关文章

  1. 浅谈:深入理解struts2的流程已经spring和struts2的整合

    第一步:在tomcat启动的时候 1.在tomcat启动的时候,首先会加载struts2的核心过滤器StrutsPrepareAndExecuteFilter <filter> <f ...

  2. Spring与Struts2的整合

    一.复制jar文件. 把struts2-spring-plugin-..*.jar和spring.jar复制到Web工程的WEB-INF/lib目录下,并且还需要复制commons-logging.j ...

  3. spring和struts2的整合的xml代码

    导入spring的pring-framework-4.0.4.RELEASE的所有包,导入struts2下(对于初学的推荐)bin下所有的包,虽然有些包可以能现在你用不到,但可以保证你基本上不会出现缺 ...

  4. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  5. Spring框架+Struts2框架第一次整合

    1:Spring框架和Struts2框架如何整合??? Spring 负责对象创建 Struts2 用Action处理请求 2:Spring与Struts2框架整合的关键点: 让struts2框架ac ...

  6. Spring与Struts2整合VS Spring与Spring MVC整合

    Spring与Struts2整合,struts.xml在src目录下 1.在web.xml配置监听器 web.xml <!-- 配置Spring的用于初始化ApplicationContext的 ...

  7. Spring与Struts2整合

    Spring与Struts2为什么要整合呢? 把Action实例交给Spring来管理!! 1.单独测试Struts是否添加成功(jar包和配置文件),先单独测试,不要整合之后再测试,容易出问题 we ...

  8. struts2和spring的两种整合方式

    首先,来看看如何让Spring 来管理Action. 在struts.xml中加入 <constant name="struts.objectFactory" value=& ...

  9. SSH框架之Spring+Struts2+Hibernate整合篇

    回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...

随机推荐

  1. Oracle中常见的Hint(一)

    Oracle中的Hint可以用来调整SQL的执行计划,提高SQL执行效率.下面分类介绍Oracle数据库中常见的Hint.这里描述的是Oracle11gR2中的常见Hint,Oracle数据库中各个版 ...

  2. createReadStream().pipe() Callback

    const stream = fs.createReadStream('<filepath>/example.pdf', {bufferSize: 64 * 1024}) stream.p ...

  3. vue撸的demo

    之前做过一个layui+flask的测试平台,后来听说vue挺火,学了下,做个记录 一.想法 主要想开发几大功能,方便以后复用 1.工作中常常需要记录知识,所以我决定会做一个类似markdown笔记的 ...

  4. react 的生命周期函数

    生命周期函数: 是指在某一时刻组件自动执行 的函数 初始化: 设置props和state mounting: componentWillMount 在组件即将被挂载到页面的时候自动执行 render ...

  5. 一个比较独特的"HelloWorld"

    为什么说是特殊的helloworld呢给全世界的服务器发送一个请求,这就是我"打招呼"的方式核心内容就是:向所有的ipv4地址发送一个请求即x.x.x.x,如果其是web服务,就拿 ...

  6. Java——接口interface

    3.5接口interface ①有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. ②接口(interface)是抽象方法和 ...

  7. vue 实现分页

    1 新建 pager.js 文件 /** * [pagination 分页组件] * @param {Number} total [数据总条数] * @param {Number} display [ ...

  8. 快速给一个表插入数据 用bulk_create()

  9. JCF——Map

    Hashtable LinkedHashMap Properties

  10. Delphi 异常处理

    Delphi错误:Stack overflow的解决方法 在编译Delphi程序时,执行一个内存记忆体的时候,提示:Project.exe raised exception class EStackO ...