您的位置:首页 > 其它

利用session防止表单重复提交

2012-11-07 14:12 661 查看
package com.sosio;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CLserver extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

  boolean b = isTokenvalisdate(request);

  if(b){

   request.getSession().removeAttribute("token");

   System.out.println("提交正确后的做法!");

  }else{

  

   System.out.println("不要重复提交数据");

  }

 

}

private boolean isTokenvalisdate(HttpServletRequest request){

  String client_token = request.getParameter("token");

  if(client_token==null){

   return false;

  }

  String server_token = (String) request.getSession().getAttribute("token");

  if(server_token==null){

   return false;

  }

  if(!client_token.equals(server_token)){

   return false;

  }

  return true;

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

  doGet(request, response);

}

}

package com.sosio;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Random;

import sun.misc.BASE64Encoder;

public class Cfrom {

private Cfrom(){

 

}

private static final Cfrom insfrom= new Cfrom();

public static Cfrom getCfrom(){

  return insfrom;

}

public String generateToken(){

  int i = new Random().nextInt();

  String token = System.currentTimeMillis()+i+"";

  try{

   MessageDigest md =MessageDigest.getInstance("md5");

   byte [] md5=md.digest(token.getBytes());

   BASE64Encoder encoder= new BASE64Encoder();

   return encoder.encode(md5);

  }catch(NoSuchAlgorithmException e){

   throw new RuntimeException(e);

  

  }

}

}

package com.sosio;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class javaformserver extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

   response.setContentType("text/html;charset=UTF-8");

   PrintWriter out=response.getWriter();

   String token = Cfrom.getCfrom().generateToken();

   request.getSession().setAttribute("token", token);

   out.print("<form action='/cookies/servlet/CLserver' method='post'>");

   out.print("<input type='hidden' name='token' value='"+token+"'>");

   out.print("用户名:<input type='text' name='username'/>");

   out.print("<input type='submit' value='提交'/>");

   out.print("</form>");

  

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

  doGet(request, response);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: