`
zhoujiangzi
  • 浏览: 93387 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring整合Struts2

阅读更多

Spring自己提供了一套web框架,同时也支持第三方web框架,下面就简单记录下spring整合struts2

因为是WEB工程,所以先在eclipse里面创建web项目,准备使用的jar包,struts2和spring官网都可以下载。

1. 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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	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">
	
	
	<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   	 </listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/config/springConfig.xml</param-value>
	</context-param>
	
	<!-- 配置struts -->
	<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是通过过滤器来拦截我们的请求,所以使用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter来进行拦截,这里拦截所有的请求

使用org.springframework.web.context.ContextLoaderListener来启动spring容器

2.创建HelloAction

package com.jacksoft.spring.struts.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String str;

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	@Override
	public String execute() throws Exception {
		System.out.println("sss:" + getStr());
		return SUCCESS;
	}

}

 这个action比较简单,只有一个属性str,加上getter和setter方法,等下用spring来注入数据

3.创建hello.jsp

在WEB-INF/jsp下面创建hello.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>Spring-Struts2</title>
</head>
<body>
Hello:${str}
</body>
</html>

 简单使用表达式来将刚刚action里面的str显示出来

4.springConfig.xml

将HelloAction交给spring来管理,每次都要创建实例,所以scope=prototype,为str注入数据

<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd
						http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
						http://www.springframework.org/schema/aop
						http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
						http://www.springframework.org/schema/tx
						http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<!-- 每次都创建实例 -->
	<bean id="helloAction" class="com.jacksoft.spring.struts.action.HelloAction" scope="prototype">
		<property name="str" value="Jack"/>
	</bean>
</beans>

 5.struts.xml

struts在创建action的时候,也是一个和spring一样的容器,而现在我们要使用spring来管理,所以需要我们指定struts.objectFactory为spring,同时helloAction已经交给spring管理了,所以我们配置的action对应的class应该为spring里面对应的bean,不然spring没法管理,仍然还是有struts自己创建action

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 
	<constant name="struts.objectFactory"
		value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
 -->		
	<constant name="struts.objectFactory"
		value="spring" />	
		
	<constant name="struts.devMode" value="true" />
	
	<package name="default" extends="struts-default">
		<action name="hello" class="helloAction">
			<result name="success">/WEB-INF/jsp/hello.jsp</result>
		</action>
	</package>
</struts>

 

这里struts.objectFactory的值可以简单的写成spring,也可以完全指定:org.apache.struts2.spring.StrutsSpringObjectFactory

6.Web Server

这里使用Jetty来作为web服务器,所以需要编写启动程序类

package com.jacksoft.spring.struts.webserver;

import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;

/**
 *  创建Jetty容器
 * @author Jack
 *
 */
public class WebServer {

	public static void main(String[] args) {
		try{
			Server server = new Server(8080);
			WebAppContext context = new WebAppContext();
			context.setContextPath("/springTest");
			context.setResourceBase("./WebContent");
			server.setHandler(context);
			server.start();
			server.join();
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
}

 指定访问路径和加载路径

 接下来就可以访问了,http://localhost:8080/springTest/hello

 对应工程目录结构:

 

 

 

  • 大小: 91.1 KB
  • 大小: 46.8 KB
分享到:
评论

相关推荐

    SSH笔记-Spring整合Struts2

    在IT行业中,SSH(Spring、Struts2、...总的来说,Spring整合Struts2是一种最佳实践,能够提升企业级应用的开发效率和质量。理解这一整合过程,对于任何想要深入理解和使用SSH框架的开发者来说,都是非常重要的。

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring还提供了对其他库的集成,如JDBC、JMS、JTA等,以及对其他框架如Hibernate、Struts2的整合支持。 2. **Hibernate框架**: - Hibernate是一个对象关系映射(Object-Relational Mapping,ORM)框架,它简化...

    spring整合struts2

    整合过程中,开发者需要配置Struts2的配置文件以指向Spring的DispatcherServlet,同时配置Spring以管理Struts2的Action和Service。对于Hibernate,需要配置数据源、实体类和映射文件,以及事务管理策略。整个过程...

    整合struts2和spring

    将Struts2和Spring整合可以充分利用各自的优势,实现更加灵活、高效的应用开发。 整合Struts2和Spring主要涉及以下几个关键步骤: 1. **添加依赖**:首先,需要在项目的构建配置文件(如Maven的pom.xml或Gradle的...

    spring与struts2整合

    同时,为了集成 Spring,需要配置 Struts2-Spring 插件,这样 Struts2 就能利用 Spring 管理的 Bean。 4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过...

    Spring集成Struts2环境简单配置

    以下是对“Spring集成Struts2环境简单配置”的详细说明: 首先,我们需要在项目中引入Spring和Struts2的依赖库。这通常通过Maven或Gradle等构建工具完成,添加相应的依赖项到项目的pom.xml或build.gradle文件中。...

    spring整合struts2与hibernate核心配置文件

    `struts2-spring-plugin.xml`配置Struts2与Spring的集成,确保Action类由Spring容器管理。`spring-context.xml`中,需要配置数据源、SessionFactory、事务管理器以及各业务层和DAO层的bean。Hibernate的`hibernate....

    spring整合struts2 开发源码

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts2则以其优秀的MVC设计模式著称,两者整合可以构建出高效、可维护的Web应用。本教程将深入探讨如何将Spring与Struts2进行整合,以及相关的源码...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    spring整合struts2的方法

    5. **整合Struts2的Action**:如果有些Action还需要使用Struts2,可以在Spring的配置文件中定义这些Action类的bean,并在Action类中使用Spring的setter方法注入依赖。 以上两种整合方式各有优缺点。基于Spring-...

    spring+struts2+ibatis整合的jar包

    总的来说,Spring、Struts2和iBatis的整合为Java Web开发提供了一个强大、灵活的解决方案,让开发者能够更专注于业务逻辑,而不是框架的底层实现。通过合理的配置和使用这个jar包,开发者可以快速构建出稳定、高性能...

    Spring与Struts 2整合.zip

    整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到Struts 2的Action中,以及利用Spring的AOP进行事务管理。整合步骤通常包括以下几个部分: 1. **添加依赖**:在项目中引入Spring和Struts 2的库...

    Spring整合Struts

    ### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...

    Spring集成struts2、ibatis、dwr、poi实现的demo

    使用Spring集成struts2、ibatis、poi实现的增删改查功能,包括采用jquery实现的无刷新查询机分页、dwr实现的两级联动、以及采用poi动态将数据库数据导出成excel,本demo采用mysql数据库,附有建表sql,项目导入...

    Spring与Struts2整合

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,而Struts2则以其优秀的MVC设计模式著称,两者整合可以构建出高效、可维护的Web应用。下面将详细介绍Spring与Struts2整合的相关知识点。 **一、整合背景*...

    spring和struts的整合-aop的使用

    最后,关于提供的"spring_add"文件,可能是Spring整合Struts2过程中的一个示例或配置文件。它可能包含了Spring的bean定义,或者是在Struts2中使用Spring时需要的特定配置。具体用途需要根据文件内容来解读。 总之,...

Global site tag (gtag.js) - Google Analytics