• 背景:

  上一篇文章《Spring(三):Spring整合Hibernate》已经介绍使用spring-framework-4.3.8.RELEASE与hibernate-release-5.2.9.Final项目整合搭建的过程,本文基于上一篇文章的基础之上,整合Struts2。

  开发环境简介:

    1)、jdk 1.8

    2)、spring-framework-4.3.8.RELEASE、hibernate-release-5.2.9.Final、struts-2.3.31

  • 引入Struts2的jar开发包到新建项目My-SSH中

  将\struts-2.3.31-all\struts-2.3.31\apps\struts2-blank.war文件解压,之后将struts-2.3.31-all\struts-2.3.31\apps\struts2-blank\WEB-INF\lib\下的所有jar发布包拷贝到My-SSH项目的WebContent\WEB-INF\lib\下。

之后,需要查看是否My-SSH项目的WebContent\WEB-INF\lib\中的jar包是否有重复的jar包,如果有重复的jar包,需要删除版本低的jar包(否则,会发生版本冲突)。

  • 在My-SSH项目的WebContent\WEB-INF\web.xml中添加filter

  从\struts-2.3.31-all\struts-2.3.31\apps\struts2-blank\WEB-INF\web.xml中可以找到struts2的filter配置信息,并把filter配置信息拷贝到My-SSH项目的WebContent\WEB-INF\web.xml中,

配置之后web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"
version="3.0">
<display-name>My-SSH</display-name> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index</welcome-file>
</welcome-file-list> <!-- 配置启动IOC容器的Listener -->
<!-- needed for ContextLoaderListener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- Struts2 filter -->
<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>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>
  • 将struts2的配置文件struts.xml拷贝到My-SSH项目的conf下

  将\struts-2.3.31-all\struts-2.3.31\apps\struts2-blank\WEB-INF\classes\struts.xml文件拷贝到My-SSH项目的conf下,

并编辑为如下内容:

<?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>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> </package>
</struts>
  • Struts2整合Spring

1)加入Struts2的Spring插件的jar包

  将\struts-2.3.31-all\struts-2.3.31\lib\struts2-spring-plugin-2.3.31.jar拷贝到My-SSH项目的WebContent\WEB-INF\lib\中(,否则会抛出异常Action class [userAction] not found - action)。

  从地址http://repo1.maven.org/maven2/org/aspectj/aspectjweaver/下载最新的aspectjweaver-1.8.9.jar,并拷贝到My-SSH项目的WebContent\WEB-INF\lib\中,否则在运行My-SSH项目时,会抛出异常:nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException。

2)在Spring的配置文件中正常配置Action,注意Action的scope为prototype

  首先,需要在conf下创建一个Spring bean配置文件applicationContext-beans.xml(用来注册存储Struts2的Action类的bean),并在src下新建com.dx.ssh.actions包,在该包下新建Action类EmployeeAction.java

package com.dx.ssh.actions;

import com.opensymphony.xwork2.ActionSupport;

public class EmployeeAction extends ActionSupport {
private static final long serialVersionUID = 1L; }

在applicationContext-beans.xml文件中添加EmployeeAction的bean.

<?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="employeeAction" class="com.dx.ssh.actions.EmployeeAction" scope="prototype"></bean>
</beans>

  其次,修改web.xml“配置启动IOC容器的Listener”的配置内容:

    <!-- 配置启动IOC容器的Listener -->
<!-- needed for ContextLoaderListener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>

3)在Struts2的配置文件struts.xml中配置Action时,class属性指向该Action在IOC中的id

struts.xml配置EmployeeAction的Action时

<?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>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<action name="emp-*" class="employeeAction" method="{1}">
<result name="list">/WEB-INF/views/emp-list.jsp</result>
</action>
</package>
</struts>

Spring(四):Spring整合Hibernate,之后整合Struts2的更多相关文章

  1. Spring、SpringMVC、Hibernate详细整合实例,包含所有步骤

    Eclipse完整工程如下 Jar包如下 CSDN下载地址:https://download.csdn.net/download/zhutouaizhuwxd/9721062 其中,整个工程主要可以分 ...

  2. 【 SSH 整合】Spring、Struts、Hibernate基本整合

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  3. spring(四) 手动整合web项目(SSH)

    清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...

  4. spring整合hibernate的详细步骤

    Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...

  5. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  6. Spring+Struts2+Hibernate框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖(推荐) 在WEB-INF的web.xml中进行配置 ————–Hibernate配置 —————- 创建entity包,创建数据库相关实体类 根据实体类 ...

  7. java框架之Spring(4)-Spring整合Hibernate和Struts2

    准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...

  8. Struts2+Hibernate+Spring(SSH)三大框架整合jar包

    Struts2 + Spring3 + Hibernate3 框架整合 1. 每个框架使用 (开发环境搭建 )* 表现层框架 struts2 1) jar包导入: apps/struts2_blank ...

  9. Struts2 Spring Hibernate 框架整合 Annotation MavenProject

    项目结构目录 pom.xml       添加和管理jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

随机推荐

  1. 归并排序(非递归,Java实现)

    归并排序(非递归):自底向上 public class MergeSort { /** * @param arr 待排序的数组 * @param left 本次归并的左边界 * @param mid ...

  2. Spring Boot 定时任务的使用

    @Configuration @EnableScheduling public class ScheduleConfig { private final Logger logger = LoggerF ...

  3. Java实现单向链表反转

    public class LinkedListTest { public static void main(String[] args) { Node A = new Node("A&quo ...

  4. Oracle的常用的命令

    --导出数据库 exp test2/test2@trp84 file=e:\test2.dmp owner=test2 --导入数据库 imp test2/test2@orcl file='e:\te ...

  5. 解决Oracle登录时出现无法处理服务名问题

    1.首先找到客户端的tnsnames.ora文件,打开看看里面有没有配置相应的服务器名,服务器名就是你的数据库名: 2.如果有相应的服务器名,那就检查一下配置信息是否错误,如果没有就添加: 3.配置信 ...

  6. /var/spool/clientmqueue目录下存在大量文件的原因及解决方法

    问题现象:linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件.原因分析: 系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给c ...

  7. 【Spring系列】Spring mvc整合redis(非集群)

    一.在pom.xml中增加redis需要的jar包 <!--spring redis相关jar包--> <dependency> <groupId>redis.cl ...

  8. alpha-咸鱼冲刺day1-紫仪

    总汇链接 一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展   登陆界面随意写了一下.(明天用来做测试的) 把学姐给我的模板改成了自家的个人主页界面,侧边栏啥的都弄出来了(快撒花花 ...

  9. 冲刺NO.1

    Alpha冲刺第一天 站立式会议 项目进展 项目的第一天,主要工作是对项目的开发进行规划,以及将规划的成果转化为燃尽图与博客文章.依据项目需求分析报告与开题报告中已经完成的设计任务和项目规划,我们将系 ...

  10. fs 创建文件夹

    var http = require("http"); var fs = require("fs"); var server = http.createServ ...