zoukankan      html  css  js  c++  java
  • 弹出窗口Session丢失、防止表单重复提交问题

    一、弹出窗口Session丢失问题

    弹出窗口Session丢失
    使用window.showModalDialog进行信息的提示,相当方便,也容易控制外观和布局。但是存在一个严重的问题,就是Session丢失。当在A页面进行showModalDialog时,弹出的模态窗口open新页面或new dialog()时,会得不到A页面中的Session,这样就严重地限制了他的使用范围。
    进一步的使用模式窗口可以发现session的丢失总是便随页面的刷新
    1.在普通页面中弹出模式窗口且进行new dialog()操作时 会造成该进程中所有页面session的丢失

    2.在模式窗口嵌套使用时 弹出的模式窗口并不会使父模式窗口的session丢失 但是会取不到父模式窗口的值

    3.在弹出的模式窗口中使用js脚本需要验证表单时 如果出现return true or false之类的语句,会造成模态窗口session的丢失。

    用showModalDialog经常出现这样那样奇怪的问题,因此最好少用showModalDialog。替代的方法就是用DIV来模拟实现模式窗口相同的功能。

    二、防止表单重复提交

    <s:token/>标签防止重复提交:
    1、在表单中加入<s:token/>
    <s:form action="helloworld_other" method="post" namespace="/test">
     <s:textfield name="person.name"/><s:token/><s:submit/> 
    </s:form>
    2、配置拦截器
    <action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="{1}">
     <interceptor-ref name="defaultStack"/>
     <interceptor-ref name="token"/>
     <result name="invalid.token">input.jsp</result>
     <result>/WEB-INF/page/result.jsp</result>
    </action>
    当token拦截器在会话的token与请求的token不一致时,将会直接返回invalid.token结果。
    在debug状态控制台出现下面信息,是因为Action中并没有struts.token和struts.token.name属性,不必关心。
    严重:Parametersinterceptor-[setParameters]:UnexpectedException caughtsetting'struts.token'on'class xxx:Error'...
    严重:ParametersInterceptor-[setParameters]:....

  • 相关阅读:
    spark机器学习从0到1主成分分析-PCA (八)
    spark机器学习从0到1奇异值分解-SVD (七)
    spark机器学习从0到1决策树(六)
    spark机器学习从0到1支持向量机SVM(五)
    spark机器学习从0到1逻辑斯蒂回归之(四)
    spark机器学习从0到1基本的统计工具之(三)
    spark机器学习从0到1基本数据类型之(二)
    spark机器学习从0到1介绍入门之(一)
    python之感知器-从零开始学深度学习
    机器学习算法及代码实现–支持向量机
  • 原文地址:https://www.cnblogs.com/airen123/p/9563896.html
Copyright © 2011-2022 走看看