jsp/servlet防止刷新/後退引起的重複提交問題的Java Token代碼

首先是Token主類。類很簡單

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾package com.company.util;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾import java.util.ArrayList;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾import javax.servlet.http.HttpSession;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾public class Token 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    private static final String TOKEN_LIST_NAME = "tokenList";

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    public static final String TOKEN_STRING_NAME = "token";

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    private static ArrayList getTokenList(HttpSession session) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       Object obj = session.getAttribute(TOKEN_LIST_NAME);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       if (obj != null) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          return (ArrayList) obj;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       } else 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          ArrayList tokenList = new ArrayList();

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          session.setAttribute(TOKEN_LIST_NAME, tokenList);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          return tokenList;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    private static void saveTokenString(String tokenStr, HttpSession session) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       ArrayList tokenList = getTokenList(session);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       tokenList.add(tokenStr);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       session.setAttribute(TOKEN_LIST_NAME, tokenList);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾   

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    private static String generateTokenString()轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       return new Long(System.currentTimeMillis()).toString();

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    /** *//**

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * Generate a token string, and save the string in session, then return the token string.

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * 

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * @param HttpSession

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     *            session

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * @return a token string used for enforcing a single request for a particular transaction.

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     */

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    public static String getTokenString(HttpSession session) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       String tokenStr = generateTokenString();

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       saveTokenString(tokenStr, session);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       return tokenStr;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    /** *//**

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * check whether token string is valid. if session contains the token string, return true. 

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * otherwise, return false.

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * 

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * @param String

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     *            tokenStr

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * @param HttpSession

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     *            session

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     * @return true: session contains tokenStr; false: session is null or tokenStr is id not in session

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾     */

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    public static boolean isTokenStringValid(String tokenStr, HttpSession session) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       boolean valid = false;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       if(session != null)轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          ArrayList tokenList = getTokenList(session);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          if (tokenList.contains(tokenStr)) 轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾             valid = true;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾             tokenList.remove(tokenStr);

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾          }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾       return valid;

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾    }

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾}

 

在jsp頁面端。

首先import該類:

<%@ page import="com.company.util.Token" %>

表單包含隱藏的token字符串:

 

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾<form>

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾<input type="hidden" name="<%=Token.TOKEN_STRING_NAME %>" value="<%=Token.getTokenString(session) %>">

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾</form>

 

在Servlet中添加如下代碼。

 

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾if(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession()))轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾//進行正常業務流程

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾}

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾else轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾{

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾//進行防重複提交處理流程,可以不做任何處理

轉,防止刷新/後退引起的重複提交問題的Java Token代碼,非Struts  - 毛毛熾 - 毛毛熾}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章