zoukankan      html  css  js  c++  java
  • Struts2 调用非execute方法

    调用非execute方法

    1)如果你的Action类是继承自ActionSupport的话,确切的说是重写了execute方法,ActionSupport里的默认实现就是返回"success"视图。因此,你可以不实现execute方法,只要你的struts.xml里有"success"对应的result即可。

    2)如果你的Action类没有继承ActionSupport,而你又没有在struts.xml中对应<action>标签中用method属性指定你自己的方法的话,默认就要找execute方法,这时是必须要实现execute方法的,否则Struts2会找不到对应的方法而报错。

    不过,大部分情况下都是继承ActionSupport的(比如输入验证、文件上传等功能就要求必须继承)。还有,不管你写没写execute方法,还是可以用<action>标签的method属性指定其他方法的。

    在前面有关Action的学习中,我们的Action中真正实现业务逻辑的只有execute方法,如果我们每个Action中都只有这么一个方法的话,那么当我们程序中需要的功能很多时,我们就不得不手动编写很多的Action类了,这显然是不合理的。前面我也说道了我们的Action类并不一定非得继承某个类或者实现某个接口,我们可以使用POJO来作为我们的Action,并且我们的Action中也并不一定非得要有execute方法,如果我们使用的不是execute方法,那么我们就需要在配置Action的是时候在action标签上使用method属性来指出我们需要使用的动作方法。

    那么我们也可以在一个Action中编写多个用于实现业务逻辑的方法,他们分别执行不同的功能,但是做的工作又是有相似的地方。比如我们可以将所有与用户相关的处理操作都写在UserAction当中,那么这样我们就能够更好的组织我们的代码。同样,我们只需要在struts.xml中为我们的action标签指定我们要使用的method即可。

    要实现在一个Action类中调用非execute方法有三种实现方式:

    (1)使用method属性

     <action name="userSave" class="action.UserAction" method="save">
    
               <result name="success">/success.jsp</result>
    
           </action>

    (2)使用通配符

    除了使用上面说到的方法外,我们也可以不用在struts.xml中对Action中的每一个动作方法都进行配置,我们可以之配置一个,在这个actin中使用通配符来指定将要执行哪个方法。

      <action name="*User" class="action.UserAction" method="{1}">
    
               <result name="input">/input.jsp</result>
    
               <result name="success">success.jsp</result>
    
           </action>

    (3)动态方法调用

    除了上面介绍的方法,struts2中还有一种实现方法——动态方法调用。使用动态方法调用的格式为 action!method即使用”!”来连接我们配置的action和要执行的方法,使用这种方式我们不需要为acttion标签指定method属性。

    <package name="default" namespace="/" extends="struts-default">
    
       
    
           <action name="user" class="action.UserAction">
    
               <result name="input">/input.jsp</result>
    
               <result name="success">/success.jsp</result>
    
           </action>
          
    
    </package>

    然后我们要对input.jsp做一些修改,将form的action属性修改为”user!save”:

    <form action="user!save" method="post">
    
         username : <input ype="text" name="userName"/><br/>
    
         password :<input type="password" name="password"><br/>
    
          <input type="submit" value="submit"/>
    
      </form>
  • 相关阅读:
    linux挂载windows共享文件夹
    centos-6.7 内核升级(转)
    关闭系统邮件提醒:you hava a new mail(转)
    2016年国内开源镜像站点汇总(转)
    RedHat/Fedora/Centos 下bash 自动补全命令
    shell死循环脚本示例
    查看http的并发请求数与其TCP连接状态
    (十二)微信小程序实现登陆页面+登陆逻辑
    vue实现登陆单页面
    vue前端项目初始化的步骤
  • 原文地址:https://www.cnblogs.com/lukelook/p/11125003.html
Copyright © 2011-2022 走看看