Struts2 处理多个业务逻辑的Action详解

strut2 允许用户自定义个业务控制器方法

默认的情况下是execute()
然而我们可以自定义方法,从而使得同一个action可以处理多个业务逻辑

例如

1.我们的action

 代码如下 复制代码

public class myAction extends Actionsupport
{
     @Override
     public String execute() throws Exception
    {
          //默认业务处理方法
    }

    @Override
    public String myExecute() throws Exception
   {
         //自定义的业务处理方法
   }
}

2.有两种方法

第一种方法
我们的strut.xml的配置如下

 代码如下 复制代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        <constant name="struts.custom.i18n.resource" value="mess" />
        <constant name="struts.i18n.encoding" value="GBK" />
       <package name="default" extends="struts-default">
               <action name="login" class="org.Rudiment.action.LoginAction">
                   <result name="input">/login.jsp</result>
                   <result name="error">/error.jsp</result>
                   <result name="success">/welcom.jsp</result>
              </action>
       </package>
</struts>   

当前台form的action="login" 的时候由 execute() 处理
当前台form的action="login!myExecute" 的时候由 myExecute() 处理

第二种方法

我们的strut.xml的配置如下

 代码如下 复制代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        <constant name="struts.custom.i18n.resource" value="mess" />
        <constant name="struts.i18n.encoding" value="GBK" />
       <package name="default" extends="struts-default">
               <action name="login" class="org.Rudiment.action.LoginAction">
                   <result name="input">/login.jsp</result>
                   <result name="error">/error.jsp</result>
                   <result name="success">/welcom.jsp</result>
               </action>
               <action name="tlogin" class="org.Rudiment.action.LoginAction" method="myExecute">
                   <result name="error">/index.jsp</result>
               </action>
       </package>
</struts>   

这种方法比上一种方法多配置了一个 action name="tlogin"
这个action 多了个method="myExecute"

当我们前台的form的action="login"的时候,业务处理将提交由execute()方法处理;
当我们前台的form的action="tlogin"的时候,业务处理将提交由myExecute()方法处理

时间: 2024-12-08 19:26:12

Struts2 处理多个业务逻辑的Action详解的相关文章

jquery in action 详解

jquery in action 详解 1.引用传递 在网页特效中,string int boolean 不是按引用进行传递的.而对象和数组是按引用传递的. 示例:  // create an array of items         var items = new array("one", "two", "three");         // create a reference to the array of items        

JavaScript知识点总结(四)之逻辑OR运算符详解_javascript技巧

在JavaScript中,逻辑OR运算符用||表示 var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse; 下面的真值表描述了逻辑AND运算符的行为: 在JavaScript中,0,"",false,null,undefined,NaN均表示false, 可以用如下的代码证明: <script type="text/javascript"> var bFalse = fal

把业务逻辑从Action层移到Service层遇到的麻烦,求解

问题描述 以前一直把逻辑全部放在action层的,service只是从被action调用,从daoInterfaceFactory里获得dao然后用dao执行crud,最近一直听别人说service层离数据库更近一点,于是开始尝试把业务逻辑放在service,但是出现了一个让我意想不到的问题,在service层里,我需要把数据库里的数据取出和外部传来的一个vo里的数据作比较,符合条件就更新这个vo,我把vo的id赋值为和数据库取出的那个对象的id一样的数值,然后用hibernate的templt

Struts2框架学习之二:action详解

前言 在struts 2中,action是其核心功能,使用struts 2框架,主要的开发都是围绕action进行的,我们编写的action通常需要实现com.opensymphony.xwork2.Action接口,需要实现的方法是execute方法,但是在实际的开发中,编写的action也可以不必实现action接口,而是直接创建一个普通Java类,并添加execute方法就可以public String execute(){return "success";}.还有一种方式是集成

.net循环、逻辑语句块详解(基础知识)

循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好了,进入正题: 本篇还是.NET 基础部分咯,主要简述循环,判断: 循环: for循环 语法: 1 2 3 4 for(表达式1;表达式2;表达式3) {  循环体; } 表达式1一般为声明循环变量,记录循环的次数(int i=0;) 表达式2一般为循环条件(i<10) 表达式3一般为改变循环条件的代码

详解在Java的Struts2框架中配置Action的方法_java

在Struts2中Action部分,也就是Controller层采用了低侵入的方式.为什么这么说?这是因为在Struts2中action类并不需要继承任何的基类,或实现任何的接口,更没有与Servlet的API直接耦合.它通常更像一个普通的POJO(通常应该包含一个无参数的execute方法),而且可以在内容定义一系列的方法(无参方法),并可以通过配置的方式,把每一个方法都当作一个独立的action来使用,从而实现代码复用. 例如: package example; public class U

使用WEBLOGIC PORTAL规则引擎中实现动态业务逻辑

web|动态 简介 业务应用的需求总是随着业务环境的变化趋势而不断地改变.决策很少是一成不变的,并且竞争压力要求业务逻辑的设计和实现具有灵活性,以快速地适应不断变化的需求.通常,对业务逻辑的更改必须由开发人员来完成,然后进行多次彻底的测试,而这将是一个很耗时的过程.在应用程序的修改工作完成后,需要将其重新部署到服务器,需要留出预定的停机时间,以防应用程序对用户不可用. 对于这个问题,更好的解决方案是通过应用程序之外的一组规则来实现某些业务决策.这些规则并没有被编译到应用程序中,而是在运行时读取并

CodeIgniter控制器之业务逻辑实例分析_php实例

本文实例分析了CodeIgniter控制器之业务逻辑.分享给大家供大家参考,具体如下: 前面分析了公用控制器按模块分发,方便对特定模块的控制,而具体的实现类则是放在library中.那放在library中是否合适呢?以及控制器中更多的业务逻辑该放在哪里? 先说下对CI中几个文件夹的理解 helpers.libraries: 存放一系列辅助函数.辅助类,用来辅助控制器.业务逻辑实现功能.他们中的方法应当尽量避免与CI依赖,依赖越紧越难以复用.以邮件发送为例,发送邮件时很多参数是不变的,如编码.协议

艾伟_转载:[一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理

本系列文章导航 [一步一步MVC]第一回:使用ActionSelector控制Action的选择 [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 [一步一步MVC]第三回:MVC范例大观园 [一步一步MVC]第四回:漫谈ActionLink,有时"胡搅蛮缠" [一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper [一步一步MVC]第六回:什么是MVC(上)? 由问题引出 在ASP .NET MVC中,以友好的U