zoukankan      html  css  js  c++  java
  • 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题
        在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行两次了。继续查找,发现调用的是返回json数据格式的action,如果是调用返回页面的action就不会有这种问题。
        结合网上的搜索,总结了一下:
            1.  json格式下, firefox中的yslow插件会发送第二个 HTTP GET 请求得到页面的信息。.
            2.  ajax模式下,调用的action方法不能为get*方式命名,内中机理未知。
    结论:action中方法最好不要以get开头

    最近在用struts2遇到一个怪问题,struts2的默认方法老是执行两次,搞了大半天都没有找到,在最后即将放弃时终于找打了,原来是响应的页面有一个图片标签,而图片标签请求的地址不存在,它就默认再次请求了当前请求的url,造成了两次执行struts2的方法。为此特做下次笔记,给自己和大家分享,同时还在网络上搜索其它几个造成的方法。
            1,被响应的图片URL不存在,导致请求原谅url而执行了两次;
            2,ajax模式下,调用的action方法不能为get*方式命名,内中机理未知;
            3,提交标签中用到JS脚本去执行的话,如写成<input type="submit" ... onclick="save()>的话,submit要执行一次,onclick="save()也要执行一次,去掉其中一个即可;


    json格式下, firefox中的yslow插件会发送第二个 HTTP GET 请求得到页面的信息。.
    谨记action 如果用到JSON ( type="json")  中方法名不要用get开头,
    *.action  注意用json最好action方法名不要以get开头,json把Acion类中所有的已get开头的方法返回值封装

    jsp: 
    <!--使用按钮提交form--> 
    <s:form action=""> 
    <input type="button"onclick="search()"value="search"/> 
    </s:form>

    解决办法:
    <s:form action="" onsubmit="return false;">
    原因是,form表单提交会被struts2当作action执行.

    结论:尽量用html自带的form 标签

  • 相关阅读:
    【题解】Candle
    【题解】购物
    【题解】论逼格
    浅谈前缀和
    浅谈 LCA
    浅谈Meet in the middle——MITM
    拓扑排序
    时间复杂度符号
    浅谈排序算法[动图]
    404 页面不存在
  • 原文地址:https://www.cnblogs.com/cRaZy-TyKeIo/p/3543333.html
Copyright © 2011-2022 走看看