Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327704
  • 博文数量: 96
  • 博客积分: 2041
  • 博客等级: 大尉
  • 技术积分: 1080
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-20 14:08
文章分类

全部博文(96)

文章存档

2015年(2)

2013年(1)

2012年(93)

分类: 系统运维

2012-01-23 00:37:29

使用session token时,必须用struts2表标签库,不能用html
通过session token防止重复提交:
当客户端请求页面时,服务器会通过token标签生成一个随机数,并且将随机数放置到session当中,然后将随机数发向客户端;如果客户第一次提交,那么浏览器会将该随机数发往服务器,服务器端会接收到该随机数并且与session中所保存的随机数进行比较,这时两者的值是相同的,服务器认为是第一次提交,并且将更新服务器端的这个随机数值;如果此时再次重复提交,那么客户端向服务器端的随机数还是之前的那个,而服务器端的随机数则已经发生了变化,两者不同,服务器就认为这事重复提交,进而转向invalid.token所指向的结果页面。
 
token.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
< prefix = "s" uri= "/struts-tags"   %> 
 
 
 username:

 password:

 
 
 
  
 
 

struts.xml

   
     /tokenSuccess.jsp
     tokenFail.jsp
 
 
   

   
TokenAction.java
package com.shengsiyuan.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class TokenAction extends ActionSupport
{
 private String username ;
 private String password ;
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 @Override
 public String execute() throws Exception {
  return SUCCESS ;
 }
}
tokenSuccess.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
< prefix = "s" uri = "/struts-tags" %>
 
   
 username:

 password:
 

 

tokenFail.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
 
 不用重复提交表单
 

阅读(11537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~