`

Struts2与spring3的巧妙结合实现零配置

阅读更多

1、配置web.xml

 

<!-- springListener -->
	<context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- struts2Filter -->
	<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>*.action</url-pattern>
	</filter-mapping>

 

 

2、spring配置,使用全注解配置

 

<!-- 注解配置 -->
	<context:annotation-config></context:annotation-config>
	<context:component-scan base-package="com.example"></context:component-scan>

 

 

3、struts2的配置,这部分是关键

 

<constant name="struts.objectFactory" value="spring"></constant>
<!--允许使用*/*的配置-->
<constant name="struts.enable.SlashesInActionNames" value="true"></constant>
	
	<package name="restful" extends="struts-default">
		<action name="*/*" class="{1}Action" method="{2}">
			<result name="success">${forward_page}</result>
			<result name="redirect" type="redirect">${redirect_page}</result>
		</action>
	</package>

 

4、BaseAction,配合struts.xml用来控制页面跳转,传递属性

 

public class BaseAction
{
    public static final String SUCCESS = "success";

    public static final String REDIRECT = "redirect";

    private String forward_page;

    private String redirect_page;

    //转发
    public String forward(String viewPath)
    {
        forward_page = viewPath;
        return SUCCESS;
    }
    //重定向
    public String redirect(String viewPath)
    {
        redirect_page = viewPath;
        return REDIRECT;
    }
    //添加属性
    public BaseAction addAttr(String key, Object value)
    {
        Map<String, Object> request = (Map<String, Object>) ActionContext
                .getContext().get("request");
        request.put(key, value);
        return this;
    }

    public String getForward_page()
    {
        return forward_page;
    }

    public String getRedirect_page()
    {
        return redirect_page;
    }

}

 

 

5、自定义的Action

 

@Controller
public class AccountAction extends BaseAction
{
    public String add()
    {
        //转发
        return forward("/add.jsp");
    }

     public String get()
    {
        //重定向
        return redirect("get.jsp");
    }

    public String list()
    {
        @SuppressWarnings("unchecked")
        List list = new ArrayList();
        int count = 10;
        // 添加属性及跳转
        return addAttr("list", list).addAttr("count", count).forward(
                "/list.jsp");
    }

}

 

这样的好处就是可以省去一切struts2中Action的配置,当我们访问account/add.action时,自动调用AccountAction.add()方法。

如果我们想调用TestAction中的delete()方法,可以直接通过test/delete.action去调用。

在这里,我们采用的约定大于配置,如xxx/yyy.action,xxx对应Action的名字,此处对应xxxAction,yyy对应方法名.

 

 

分享到:
评论

相关推荐

    内容管理系统(hibernate3+struts2+spring2).rar

    本项目"内容管理系统(hibernate3+struts2+spring2)"正是这样一个典型的应用实例,它巧妙地融合了三个重要的Java开源框架——Hibernate、Struts2和Spring2,为开发者提供了一个高效、灵活且易于维护的Web应用解决方案...

    spring+struts2+mybatis三大框架集成实现用户的增删改查入门操作案例

    同时,需要配置Struts2与Spring的整合,使Struts2能够从Spring容器中获取Bean。 4. **配置MyBatis**:创建MyBatis的全局配置文件(`mybatis-config.xml`),配置数据源、Mapper扫描等。编写Mapper接口和XML配置文件...

    struts+spring+hibernate俱乐部项目

    2. 配置Spring:创建spring-context.xml文件,定义Bean,配置数据源、事务管理器,以及Struts和Hibernate的相关配置。 3. 配置Hibernate:创建hibernate.cfg.xml文件,设置数据库连接,定义实体类及其映射文件,配置...

    netctoss2

    Netctoss2是一个典型的Java Web应用程序,它巧妙地融合了Struts2、Spring2.0和Hibernate3.0这三大主流开源框架,以实现高效、灵活的业务逻辑处理和数据持久化。在本文中,我们将详细探讨这三个框架的核心功能以及...

    学生信息系统(使用了Sturts+Spring+Hibernate技术)

    下面,我们将深入探讨这个系统的设计与实现。 首先,Struts作为MVC(Model-View-Controller)框架的代表,负责处理用户的请求并控制应用的流程。在学生信息系统的实现中,Struts负责接收HTTP请求,解析请求参数,并...

    基于struts+hibernate的采购管理系统源码.zip

    本系统——基于Struts+Hibernate的采购管理系统,是一个典型的企业级Java Web应用,它巧妙地结合了Struts、Hibernate两大框架,为企业的采购管理提供了一套高效、灵活的解决方案。下面,我们将深入探讨这个系统的...

    java基于ssm框架旅游网站的设计与实现设计文档.docx

    "Java基于SSM框架旅游网站的设计与实现" 标题:Java基于SSM框架旅游网站的设计与实现设计文档 描述:本文档旨在设计和实现一个基于Java的旅游网站,... * 地图元素与旅游这一空间上的位移运动巧妙结合更能吸引用户

    电子商城在线购物管理系统

    总的来说,这个电子商城在线购物管理系统展示了如何将Hibernate、Struts2和Spring这三大框架巧妙结合,实现一个功能完善的电商系统。通过深入理解和实践,开发者不仅能掌握这些核心技术,还能了解到如何在实际项目中...

    超市管理系统示例项目

    SSH(Struts2+Spring+Hibernate)是Java开发领域中广泛应用的一个开源框架集成,它结合了Struts2的MVC设计模式、Spring的依赖注入(DI)与面向切面编程(AOP)以及Hibernate的对象关系映射(ORM)功能,为开发者提供...

    004_基于数据库的登陆程序Struts DAO Hibernate 代码.rar

    在这个基于数据库的登录程序中,这些技术被巧妙地结合在一起,为用户提供了安全、高效的登录功能。 Struts是一个开源的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。它主要负责控制应用...

    SSH实现的网上书城

    在这个“SSH实现的网上书城”项目中,这些技术被巧妙地结合在一起,为用户提供了功能丰富的在线图书购物体验。下面将分别详细介绍这三个组件以及它们在项目中的作用。 1. **Struts2**:Struts2 是一个基于MVC...

    Hr人力资源管理系统

    本文将深入探讨一个名为“Hr人力资源管理系统”的项目,该项目巧妙地结合了Dojo、Struts、Spring和Hibernate等技术,构建出一套强大且灵活的管理平台。 首先,Dojo是一个强大的JavaScript库,专注于提供丰富的用户...

    OA项目实战,ssh+dwr开发的一个好项目

    在这个项目中,SSH(Struts2、Spring、Hibernate)和DWR(Direct Web Remoting)两大技术框架被巧妙地结合在一起,构建了一个高效、灵活的OA解决方案。 1. SSH框架详解: - Struts2:作为MVC设计模式的实现,...

    ssh整合

    DAO(Data Access Object)模式用于隔离业务逻辑与数据访问,`IAddressDAO`定义了数据库操作的接口,而`AddressDAO`继承自`HibernateDaoSupport`,实现了这些接口,利用Spring的Hibernate支持简化了数据操作。...

    学生成绩管理系统

    在这个系统中,Struts和Hibernate框架被巧妙地结合在一起,以提供高效、可靠且易于维护的解决方案。 Struts是Apache软件基金会下的一个开源项目,它是一个用于构建企业级Java Web应用的MVC(Model-View-Controller...

    基于ssm服装定制系统.zip

    SSM框架是Java开发领域中一种常见的技术组合,由Spring、Struts2和MyBatis三个开源框架整合而成。在本项目“基于SSM服装定制系统”中,这三个框架被巧妙地融合,构建了一个完整的微服务应用,实现了服装定制的线上...

    jsp143时装原创设计交流网ssh+mysql.zip

    在这个名为“jsp143时装原创设计交流网”的项目中,开发者巧妙地利用了SSH框架与MySQL数据库的结合,构建了一个用于时装设计爱好者交流的平台。 首先,让我们深入了解SSH框架。Struts2作为表现层框架,负责处理HTTP...

    基于ssm框架的java毕业设计-智能快递分拣系统(源码+说明+演示视频)

    在【智能快递分拣系统】的毕业设计中,这些技术被巧妙地融合在一起,实现了快递分拣的自动化流程。 - **系统架构**:采用B/S(Browser/Server)架构,用户通过浏览器即可访问系统,降低了客户端的维护成本,同时也...

    树形结构ssh+mysql+json

    在这个主题"树形结构ssh+mysql+json"中,我们将探讨如何结合SSH(Spring、Struts、Hibernate)框架、MySQL数据库和JSON(JavaScript Object Notation)格式来实现一个支持N级菜单的加、删、改、查功能。 首先,SSH...

    Java Web 整合开发王者归来(源代码)

    这个资料包提供的源代码可能是为了帮助开发者理解和实践在实际项目中如何将各种Java Web技术巧妙地结合起来,以实现高效、稳定且功能丰富的Web应用。 1. **Java Web基础**:Java Web开发的基础在于Servlet和JSP...

Global site tag (gtag.js) - Google Analytics