Struts框架之Action中多个业务方法处理

原创 2015年07月07日 15:14:26

当在一个service有不同的调用方法,但是由于action的默认方法为execute()。在Struts中可以使用三种方式进行处理。

通过URL叹号“!”参数

新建service类,其中有两个方法show()方法和deal()方法,分别在其中输出一句话:

package com.struts.service;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @TODO TODO
 * @author Administrator
 * @date 2015年7月7日 下午4:20:11
 * @version 1.0
 */
@SuppressWarnings("serial")
public class ActionMethodService extends ActionSupport{
    public String deal(){
        System.out.println("deal()方法调用");
        return Action.SUCCESS;
    }

    public String show(){
        System.out.println("show()方法调用");
        return Action.SUCCESS;
    }
}

struts配置文件如下:

    <action name="method" class="com.struts.service.ActionMethodService">
    <result name="success">/method.jsp</result>
        </action>

访问show方法:http://localhost:8080/struts/method!show.action
访问deal方法:http://localhost:8080/struts/method!deal.action

在action标记中加入method属性

在配置文件中的action标记中加入method属性,指定调用class类中的指定方法,如下配置:

<action name="method_show" class="com.struts.service.ActionMethodService" method="show">
            <result name="success">/method.jsp</result>
</action>
<action name="method_deal" class="com.struts.service.ActionMethodService" method="deal">
            <result name="success">/method.jsp</result>
</action>

调用deal方法:http://localhost:8080/struts/method_deal.action
调用show方法:http://localhost:8080/struts/method_show.action
缺点:当一个class中有多个处理方法时,需要在配置文件中针对同一个类配置多个action,比较繁琐。下面的动态方法调用避免了此点,可以根据访问的url来动态调用不同的方法。

动态方法调用

struts2默认不允许动态方法调用,因此需要配置常量

<!-- 动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

配置action如下:

<!-- 动态方法调用 -->
    <action name="method*" class="com.struts.service.ActionMethodService" method="{1}">
        <result name="success">/method.jsp</result>
    </action>

调用deal方法:http://localhost:8080/struts/methoddeal.action
调用show方法:http://localhost:8080/struts/methodshow.action
优点:可以根据请求的url来动态匹配从而调用不同的方法。

相关文章推荐

通配符方式解决struts框架一个Action对应多个请求的处理

动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多struts提供了三中方法解决 1、指定Action属性 2、感叹号方式 3、通配符方式...

java中从Spring、Hibernate和Struts框架的action、service和dao三层结构异常处理体系设计

java中从Spring、Hibernate和Struts框架的action、service和dao三层结构异常处理体系设计   Spring的事务实现采用基于AOP的拦截器来实...
  • mwyking
  • mwyking
  • 2016年05月24日 17:20
  • 360

【Struts框架】第一节Action-struts访问request等引用方法一

取得Map类型的request,session,application: LoginAction1.java: package cn.edu.hpu.getValue import java.ut...

【struts框架】第一节Action-路径问题与创建Action方法

1.路径问题 路径问题说明: struts中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。 虽然可以使用redirect方式解决,但redirect方式并非必...

深入浅出学习Struts框架(二):重构MVC模式代码中跳转路径和业务逻辑 .

在上篇博文《深入浅出学习Struts框架(一):一个简单mvc模式代码示例开始》中简单说了一下MVC模式代码的实现和MVC模式和三层架构的区别,并且留下一个问题—如何去掉TestServlet中的IF...

【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)

Struts的第一篇博客【SSH进阶之路】Struts基本原理 + 实现简单登录(二),我们介绍了MVC和Struts的基本理论,上篇【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简...

【Struts框架】第一节Action-模块包含和defaultAction

1.模块包含: struts.xml: 里面可以这么写 说明在struts.xml包含了一个login.xml文件 login.xml: ...

Struts框架之action中使用servlet

本文简单介绍了在Action在使用Servlet的API的三种方式:ServletActionContext、ActionContext以及实现ServletRequestWare接口。...

【Struts框架】第一节Action-简单的数据校验

假设要验证账号密码的正确性,把账号密码传进Action后,Action验证完毕后,如何将验证后的结果返回给静态界面(即前台)呢?Action里面又没有Servlet中的request和response...

【struts框架】第一节Action-struts基础

struts本质:把请求与最后的结果分开(MVC) struts的基本环境: a.需要的jar包 commons-fileupload-1.2.1.jar commons-io-1.3.2.j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts框架之Action中多个业务方法处理
举报原因:
原因补充:

(最多只允许输入30个字)