Struts2复习(四)防止表单反复提交
1.採取请求转发的方式完毕表单内容的加入会造成内容的反复插入。
2.採取重定向的方式实现数据的加入不会导致数据的反复插入。
3.防止表单反复提交的两种方式
1) 通过重定向
2) 通过Session Token(Session令牌):当client请求页面时,server会通过token标签生成一个随机数,而且将该随机数放置到session其中,然后将该随机数发向client;假设客户第一次提交,那么会将该随机数发往server端,server会接收到该随机数而且与session中所保存的随机数进行比較,这时两者的值是同样的,server觉得是第一次提交,而且将更新server端的这个随机数值;假设此时再次反复提交,那么client发向server端的随机数还是之前的那个,而server端的随机数则已经发生了变化,两者不同,server就觉得这是反复提交,进而转向invalid.token
所指向的结果页面。
配置ex:
<result name="invalid.token">/tokenFail.jsp</result>
欢迎大家一起讨论学习!
实用的自己收!
记录与分享,让你我共成长!欢迎查看我的其它博客;我的博客地址:http://blog.csdn.net/caicongyang
Struts2复习(四)防止表单反复提交的更多相关文章
- java struts2入门学习--防止表单重复提交.OGNL语言学习
一.知识点回顾 防止表单重复提交核心思想: 客户端和服务器端和写一个token,比较两个token的值相同,则非重复提交;不同,则是重复提交. 1.getSession三种方式比较: request. ...
- Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法
第一种处理方法(非拦截器): 眼下这样的方法不建议,由于JSP规范不建议写JAVA代码.这样的能够方便另外一种处理方法的理解,另外一种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机 ...
- 【Struts2】防止表单重复提交
一.概述 二.Struts2中解决方案 三.实现步骤 一.概述 regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) ...
- 12、Struts2表单重复提交
什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...
- Struts2防止表单重复提交
1.说明 系统拦截器的应用. 表单重复提交:当使用请求转化进行跳转的时候,存在着表单重复提交的问题. 2.在表单中加入s:token 如果页面加入了struts2的标签,页面的请求必须进入struts ...
- 【转】Struts2解决表单重复提交问题
用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...
- [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- struts2视频学习笔记 29-30(Struts 2常用标签,防止表单重复提交)
课时28 Struts 2常用标签解说 property标签 property标签用于输出指定值: <s:set name="name" value="'kk'&q ...
- Struts2笔记——利用token防止表单重复提交
在一些项目中经常会让用户提交表单,当用户点击按钮提交后,如果再次浏览器刷新,这就会造成表单重复提交,若是提交的内容上传至服务器并请求数据库保存,重复提交的表单可能会导致错误,然后跳转到错误界面,这是一 ...
随机推荐
- (1)html初步--表格的使用
用表格标签制作简历 html代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- Compiling Qt 5.5.1 (With Qtwebkit) With Visual Studio 2015
I usually avoid writing articles about building a specific version of a software project but this ti ...
- 克鲁斯卡尔(Kruskal)算法
# include <stdio.h> # define MAX_VERTEXES //最大顶点数 # define MAXEDGE //边集数组最大值 # define INFINITY ...
- UITabBarController 笔记(二) ViewController中加UITabBarController
新建一个简单视图iOS工程,在ViewController的viewDidLoad中代码如下 - (void)viewDidLoad { [super viewDidLoad]; // Do any ...
- SharpDevelop with Silverlight
Error creating project :The imported project "C:\Program Files (x86)\MSBuild\Microsoft\Silverli ...
- 服务器:RAID、AHCI、IDE
RAID 独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法.通过把数据放在多个硬盘上 ...
- cocoa pods出现的错误
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod 解决办法: sudo gem ...
- Virtualbox 启动虚拟机报错以及扩展、显卡驱动安装
一.Virtualbox虚拟机启动报错,如图 预先估计是BIOS中的cpu Virtualtion虚拟化支持是disable,结果一看是enable. 接下来只好Google,找到了这么一个帖子:ht ...
- Linux(CentOS6.4、CentOS6.3)下安装、配置PostgreSQL9.2
首先,卸载机器上默认安装的PostgreSQL-8.3.x . [root@localhost ~]# rpm -qa | grep postgresql postgresql-jdbc--.el6. ...
- C# - 重定义一个接口的实现
using System;using System.Collections.Generic;using System.Text; namespace MyTester{ public inter ...