精华内容
参与话题
问答
  • Action 详解

    2020-03-07 15:52:10
    Action 是用于处理请求操作的,它是由 StrutsPrepareAndExecuteFilter 分发过来的。 在 Struts2 框架中,Action 是框架的核心类,被称为业务逻辑控制器,主要用于实现对用户请求的处理。 一个 Action 类代表一次请求...

    回到首页☞

    Action 是用于处理请求操作的,它是由 StrutsPrepareAndExecuteFilter 分发过来的。

    在 Struts2 框架中,Action 是框架的核心类,被称为业务逻辑控制器,主要用于实现对用户请求的处理。

    一个 Action 类代表一次请求或调用,每个请求的动作都对应一个相应的 Action 类。也就是说,用户的每次请求,都会转到一个相应的 Action 类中,由这个 Action 类进行处理。

    简而言之,Action 就是用于处理一次用户请求的对象。

    与传统的MVC框架相比,可以实现struts2接口,也可以不实现struts2接口,传统MVC必须实现MVC接口,就和MVC框架严重耦合。
    创建一个Action 一般都会继承ActionSupport ,并且定义变量,覆盖execute方法。变量会被struts2通过setter方法自动赋值,execute方法中直接使用即可。
    当然也可以不继承,但是必须有 execute() 方法,当然也可以实现Action 接口。

    注意:action类的全路径(即包名)必须含有”action”的词汇。

    ActionSupport类

    ActionSupport 是 Action 接口的默认实现类,所以继承 ActionSupport 就相当于实现了 Action 接口。

    除 Action 接口以外,ActionSupport 类还实现了 Validateable、ValidationAware、TextProvider、LocaleProvider 和 Serializable 等接口,这为用户提供了更多的功能。

    ActionSupport 类中提供了许多默认方法,这些默认方法包括数据校验的方法、默认的处理用户请求的方法等。

    如果开发者的 Action 类继承 ActionSupport 类,会大大简化 Action 的开发

    public class HelloWorldAction extends ActionSupport {
      private Message msg;
    
      @Override
      public String execute() throws Exception {
        msg = new Message();
        return SUCCESS;
      }
    
      public Message getMsg() {
        return msg;
      }
    
      public void setMsg(Message msg) {
        this.msg = msg;
      }
    }
    

    Action 接口

    Action 接口位于 com.opensymphony.xwork2 包中,并且接口中只定义了五个字符串常量和一个 execute() 方法。

    其中,execute() 方法是 Action 类的默认请求处理方法,该方法返回一个字符串,而上面五个字符串常量的作用是统一 execute() 方法的返回值。

    import com.opensymphony.xwork2.Action;
    
    public class ImplAction implements Action {
    
        public String execute() throws Exception {
            System.out.println("ImplAction...run");
            return "defaultAction";
        }

    不继承任何类的Action

    如果Struts2发现Action类没有实现Action接口,会通过反射来调用execute方法。
    好处就是不予struts2耦合。

    public class DefaultAction {
    
        public String execute() throws Exception {
            System.out.println("DefaultAction...run");
            return "";
        }
    }
    

    回到首页☞

    展开全文
  • Action标签的用法

    千次阅读 2018-07-27 23:31:34
    Action标签,顾名思义,是用来调用Action的标签,在JSP中页面中,可以具体指定某一命名空间中的某一Action。而标签的主体用于显示及渲染Actionr的处理结果。 action标签有如下几个属性: 1、id: 可选,作为该...

    Action标签,顾名思义,是用来调用Action的标签,在JSP中页面中,可以具体指定某一命名空间中的某一Action。而标签的主体用于显示及渲染Actionr的处理结果。

    action标签有如下几个属性:

    1、id:  可选,作为该action的引用ID

    2、name:  必填,调用action的名字

    3、namespace:  可选,action所在的nqmespace

    4、executeResult,可选,指定是否将action的处理结果页面包含到本页面。

    5、ignoreContextParame: 可选,指定该页面的请求参数是否需要传入action.

    1.actionTag.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
     <head>
      <title>Insert title here</title>
     </head>
     <body> 
      <s:action name="actionTags">
       <h3>不包含结果页面</h3>
      </s:action>
       
      <s:action name="actionTags" executeResult="true" ignoreContextParams="true">
       <h3>包含结果页面</h3>
      </s:action>
      
      <s:action name="actionTags" executeResult="true" ignoreContextParams="false">
       <s:param name="name">"wangkecheng"</s:param>
       <h3>包含结果页面</h3>
      </s:action> 
     </body>
    </html>
    

    2.actionTagResult.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
     <head>
     </head>
     <body>
      <h4>actionTag结果页面</h4>
      <s:property value="name"/>
     </body>
    </html>
    

    3.ActionTag.java

    public class ActionTags extends ActionSupport {
     private String name;
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String execute() {
      return SUCCESS;
     }
    }
    

    4.struts.xml

    <action name="actionTags" class = "test1.ActionTags">
     <result name="success">/test1/actionTagResult.jsp</result>
    </action>

     

    展开全文
  • form表单action提交问题详解

    万次阅读 2018-06-17 03:48:37
    https://yq.aliyun.com/ziliao/64915form 提交action中参数无效页面通过表单(form)想服务器提交数据的时候有两种形式...form的action属性就是提交数据的url地址,method属性可以指定是GET或POST。需要注意的是如果...

    https://yq.aliyun.com/ziliao/64915

    form 提交action中参数无效


    页面通过表单(form)想服务器提交数据的时候有两种形式,一个是POST,另一个是GET。两种的一个区别是GET会直接把数据附加在url的后面,而POST发送的数据放置在http包中。form的action属性就是提交数据的url地址,method属性可以指定是GET或POST。

    需要注意的是如果采用GET方式,那么action url中参数都会被丢弃,提交时候只会把form中的数据拼接在url向服务器提交;但是POST的方式则不会这样,它会按照action指定的url进行提交数据,包含url后面跟着的参数和参数值


    action提交路径问题

    我遇到的是Form表单提交到servelet处理时遇到的问题: 
    (1)<form name="form1" action="①?" method=“②?”> 
          //表单的内容 
         </form>

    (2)对应的处理用户请求的servlet类为HelloServlet.java;


    (3)配置web.xml文件:

     代码如下复制代码

    <servlet> 
    <servlet-name>③servlet</servlet-name> 
    <servlet-class>/HelloServlet</servlet-class> 
    </servlet>

    <servlet-mapping> 
    <servlet-name>③servlet</servlet-name> 
    <url-pattern>/①welcome</url-pattern> 
    </servlet-mapping>

    然后在login.jsp中应该是:

    <form action="①welcome" method="②?">

    这样的话login.jsp的url是http://localhost:8080/jsp/login.jsp

    而HelloServlet.java的url是http://localhost:8080/jsp/welcome

    注:web.xml中③对应的两个servlet-name要一致;①中的url-pattern要与form表单中的action属性值一致。


    form表单action重复提交


     在做一个jsp提交页面时,数据莫名其妙提交2次,数据库数据插入2次,开始只把注意力集中在提交到Servlet里,做了很多测试,折腾半天,才测试出来:根本不是Servlet的问题!问题出在jsp页面上。jsp页面的提交事件导致自动提交了2次。
    form表单的js判断函数只返回false,忘记写返回true,真是郁闷死。就像下面这样:

     代码如下复制代码
    function check()
    {
    if(""==document.myform.name.value)
    {//作业名称
    window.alert("请先填写作业名称!");
    document.myform.name.focus();
    $(".name").next().show();
    return false; //离开函数
    }   
    }

    提交按钮 οnclick="javascript:return(checkform());"
    上面的check()函数由于缺少return true,导致form表单action重复提交2次。
    搜索一下,网上很多人遇到form表单action重复提交2次的问题,原因都是大同小异:
    如下
    1.

     代码如下复制代码
    (1)<input type="submit" value="tijiao" οnclick="return checkField();"/>或者图片<input type="image" src="../images/btn-login.gif" alt="Login" class="btn-login" οnclick="return checkField();"/>   
    (2)if(usernameValue !== "" && passwordValue !== ""){   
                       
            //document.getElementById("loginForm").submit(); 如果写了这行就提交了2次。     
            return true;   
    }

    2.jsp页面有些链接地址是""
    如:

     代码如下复制代码
    <img src="" />
    <link type="text/css" href=""/>" rel="stylesheet" />

    主要就是连接不能为空。
    3.
    最近在做一个JAVA项目,发现在登陆页面点击登陆之后都会执行2次ACTION的代码,跟踪了2天终于找到问题的根源:
    在登陆页面LOGIN.JSP中,如果提交按钮写成如下的方式则会提交两次:

     代码如下复制代码

    <script type="text/JavaScript">
    function loginFunc()
    {
    var form = document.getElementById("form1");
       form.submit();
    }
    </script>

     

    <form action="processLogin.action" method="post" id="form1">
    <s:textfield name="username" cssClass="input" style="width:150px;" value=""></s:textfield>
    <s:password name="password" cssClass="input" style="width:150px;" value=""></s:password>
    <input type="submit" οnclick="loginSystem()"/>//问题出在这一行
    </form>

    submit类型本身就会提交到ACTION类;onclick方法中又调用了一次submit提交方法,所以导致执行了两次ACTION的代码。

    解决方式:

     代码如下复制代码
    <input type="button" οnclick="loginSystem()"/>

    以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索servlet , 数据 , 函数 , 参数 , 代码 属性 form表单提交action、form表单提交到action、js提交form表单action、form表单提交的action、form表单提交详解,以便于您获取更多的相关知识。


    展开全文
  • I、在逆向分析中的应用 1.1 步骤1: 利用cy 找到对应的按钮地址 [UIWindow keyWindow].recursiveDescription().toString() 展开views结构 ...[UIWindow keyWindow].recursiveDescription().toString() ...

    前言

    • 找按钮的action方法
    cy# [#0x17a9cad0 actionsForTarget:#0x174eb8b0  forControlEvent:64]
    @["onVerifyContactOk"]
    
    
    • iOS 代码触发button点击事件
    [btn sendActionsForControlEvents:UIControlEventTouchUpInside];
    
    

    I、【找按钮的action方法】在逆向分析中的应用例子

    1.1 步骤1: 利用cy 找到对应的按钮地址

    • [UIWindow keyWindow].recursiveDescription().toString() 展开views结构
    [UIWindow keyWindow].recursiveDescription().toString()
    
    \u4e8c\u7ef4\u7801\u6536\u6b3e 进行搜索找到对应按钮
    
    echo -e 
    
       |    |    |    |    |    |    |    |    |    |    | <WCPayOfflinePayBottomButton: 0x170bab80; baseClass = 
    

    1.2 步骤2:寻找 点击按钮对应的执行方法

    UIButton 是继承 UIControl 的,而 UIControl 的话可以通过allTargets 与 allControlEvents查看所有的对象与事件,再使用actionsForTarget:forControlEvent:从而找到触发的方法

    - (nullable NSArray<NSString *> *)actionsForTarget:(nullable id)target forControlEvent:(UIControlEvents)controlEvent;    // single event. returns NSArray of NSString selector names. returns nil if none
    
    • allTargets
    cy# [#0x17a9cad0 allTargets]
    [NSSet setWithArray:@[#"<WeixinContactInfoAssist: 0x174eb8b0>"]]]
    
    • allControlEvents
    cy# [#0x17a9cad0 allControlEvents]
    64
    
    • actionsForTarget: forControlEvent
    cy# [#0x17a9cad0 actionsForTarget:#0x174eb8b0  forControlEvent:64]
    @["onVerifyContactOk"]
    
    • 最终确定:WeixinContactInfoAssist WeixinContactInfoAssist:
    - (void)onVerifyContactOk;
    - 
    

    1.3 小结

    • 获取allTargets
    cy# [[#0x170bab80 allTargets] allObjects][0]
    #"<WCPayOfflinePayViewController: 0x1642b200>"
    
    • 获取 actions
    cy# [#0x170bab80 actionsForTarget:[[#0x170bab80 allTargets] allObjects][0] forControlEvent:[#0x170bab80 allControlEvents]]
    @["receiveMoneyBtnPress:"]
    
    • cy# [#0x189ce7e0 setHidden:0] 验证是否找对了view

    1.3.1 进行验证方法

    • objc_msgSend
                objc_msgSend(vc, @selector(initView));
    
    • []
    cy# [[[#0x170bab80 allTargets] allObjects][0] receiveMoneyBtnPress:nil]
    
    • valueForKey
    cy# [[#0x183d6e00 valueForKey:@"m_delegate"] WCPayFacingReceiveChangeToFixedAmount]
    

    1.4 相关code

    1.4.1 ContactInfoViewController

    • cy# [#0x16b60600 _ivarDescription].toString()
     CBaseContactInfoAssist *m_oContactInfoAssist;
         CContact *m_contact;
    \tm_uiVerify (unsigned long): <01000000>
    \tm_contact (CContact*): <CPushContact: 0x177450d0>
    \tm_oContactInfoAssist (CBaseContactInfoAssist*): <WeixinContactInfoAssist: 0x174eb8b0>     
    
    • 书写 tweak
    %hook ContactInfoViewController
    - (void)viewWillAppear:(BOOL)arg1 {
    %orig;
    
    
                Ivar mDelegateVar = class_getInstanceVariable(objc_getClass("ContactInfoViewController"), "m_oContactInfoAssist");
                WeixinContactInfoAssist * mDelegate = object_getIvar(self, mDelegateVar);
                [mDelegate onAction];
            Ivar mDelegateVar1 = class_getInstanceVariable(objc_getClass("ContactInfoViewController"), "m_contact");
                
    }
    

    II、基础知识、概念

    2.1 UIControl

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView
    
    
    // send the action. the first method is called for the event and is a point at which you can observe or override behavior. it is called repeately by the second.
    - (void)sendAction:(SEL)action to:(nullable id)target forEvent:(nullable UIEvent *)event;
    - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;                        // send all actions associated with events
    

    2.2 UIButton

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIButton : UIControl <NSCoding>
    

    2.3 iOS 代码触发button点击事件

    cy# [#0x18c0ad10 sendActionsForControlEvents:UIControlEventTouchUpInside]
    
    [btn sendActionsForControlEvents:UIControlEventTouchUpInside];
    

    III、See Also

    3.1 UIButton到NSObject之间的继承关系是怎样的

    UIButton继承自UIControl,UIControl继承自UIView,UIView继承自UIResponder,UIResponder继承自最基本的类NSObject。

    UIButton是一个控件,它具备“按下”等具体的动作操控,而不仅仅是一个简单的静态组件(如UILabel),从这个角度来看UIButton肯定是继承自UIControl的;
    UIControl继承自UIView,它将UIView的复杂的触摸事件封装成了像“Touch Down”“Editing DidBegin”“Touch Drag Enter”等具体的UIControlEvent事件,其他继承自UIControl的控件还有UISwitch、UITextField、UISlider、UISegmentedControl、UIPageControl等。

    最后UIView、UIControl等都是可交互的元素,它们必然都继承自UIResponder,UIResponder继承自根类NSObject

    在这里插入图片描述

    展开全文
  • form表单中的 action=./?> 是什么意思

    千次阅读 2016-04-24 02:26:00
    action="" //一般可以为空的,这里的双引号都要有的,表示提单提交给自己(也就是当前页处理)action="a.php" //是提交给 当前目录的a.php 处理    提交到本目录的默认主页如果是 action=&...
  • action使用大全

    2016-04-06 07:55:00
    1、 使用Action跳转,当程序AndroidManifest.xml中某一个 Activity的IntentFilter定义了包含Action,  如果恰好与目标Action匹配,且其IntentFilter中没有定义其它的Type或Category过滤条件,那么就正好匹配了。 ...
  • action(一)

    2013-07-20 11:13:00
    //CCAnimation是封装动画功能的类,它可以看作是由若干个_CCSpriteFrame对象组成的序列,精灵按照顺序切换它们,就形成了动画。CCAnimation也有内存池, //此处的animationName就是key,内存池通过它找到...
  • ACTION

    2019-10-24 07:43:38
    ACTION
  • action

    2016-06-22 09:07:31
    cc.sequence 创建动作序列 ...Action对象是随着时间改变Node的属性。任何一个以Node为基类的对象都有可执行的动作对象。 例如,你可以在一个时间段内将Sprite精灵从一个位置移动到另一个位置。
  • 我们在开发项目的工程中,往往会遇到一个页面,一个表单里面放着俩个查询页面,我们希望通过不同的选择查询相应的信息,这时候我们就可以通过修改form表单里的action属性来实现,我们下面就来讲解一下如何实现这一...
  • SSH:Struts2框架(Action的配置)

    千次阅读 2015-11-25 15:49:26
    Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的execute()方法。 该方法如下:  public String ...
  • Jsp调用Action的几种方法

    万次阅读 2018-04-25 14:53:23
    所以经常会从Jsp页面调用到后端Java中Action类,因此希望总结一下,下次遇到类似问题不用再翻代码去查看: 1. 最常见的form表单提交: 一般情况下,比如在登陆界面,因为主要只涉及到登陆的功能,我们会使用form...
  • ActionScript

    千次阅读 2006-04-15 17:32:00
    AS创建文本框_root.createTextField("mytext", 1, 50, 50, 100,20);mytext.multilance=false;//设置单行;mytext.text="这是文本框"//文本赋值然后是删除这个创建的文本框:mytext.removeTextField();...
  • ActionScript 3.0基础教程(中文版)

    千次下载 热门讨论 2011-12-06 08:29:10
    [加] Derrick Ypenburg 著 这本书将帮助你建立ActionScript 3.0完整的知识体系,了解并掌握ActionScript 3.0语法的各个知识点,是开始ActionScript 3.0编程之旅的第一步。
  • ActionScript 3.0 API文档(CHM+HTML最新中文完整)

    千次下载 热门讨论 2011-03-11 20:09:30
    ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
  • 第一章:ActionScript基础

    千次阅读 2007-07-13 12:59:00
    介绍:使用ActionScript,你可以创建flash程序,作任何你能想到的事情。但是在进入更广阔的范围之前,让我们先了解一下基础。好的消息时ActionScript的命令有定义好的模式,共享相同的语法,结构,和概念。掌握基础...
  • ActionScript 3.0 语法

    千次阅读 2013-12-11 16:13:16
     常量和变量在ActionScript 3.0中使用常量和变量和其他的编程开发语言一样,没什么太大的区别,作用点都是相同的。简单理解就是常量就是值不会改变的量,变量则相反。 在AS3.0中常量也可以分为两种:顶级常量和...
  • ActionScriptActionScript2.0的Helloworld

    千次阅读 2015-06-06 14:57:00
    Flash中的脚本语言有ActionScript3.0与ActionScript2.0,两者完全不一样,这就是个坑,把所有的语法都改掉了,对很多当年的Flash高手很不负责任。本篇文章介绍当年在互联网红极一时的Flash的ActionScript2.0编程的...
  • actionscript3高阶之function说明

    千次阅读 2010-05-04 21:29:00
    function是actionscript3的一个重要组成元素,更是程序复用的基础,因此灵活运用function能大幅度的提高程序开发效率和重用性。function通常来说都有创建、调用、返回值、销毁等步骤,actionscript3的function也如此...
  • Actionscript3.0中文版

    2019-07-22 22:39:49
    资源名称:Actionscript3.0中文版   资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

空空如也

1 2 3 4 5 ... 20
收藏数 1,677,986
精华内容 671,194
关键字:

action