JavaWeb -- Session實例 -- 自動登錄 和 防止表單重復提交(令牌產生器) MD5碼

1、 自動登錄

http://blog.csdn.net/xj626852095/article/details/16825659


2. 防止表單重復提交

表單Servlet?

//負責產生表單
public class FormServlet 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 = TokenProccessor.getInstance().makeToken();request.getSession().setAttribute("token", token);  //在服務器端保存隨機數out.println("<form action='/day07/servlet/DoFormServlet' method='post'>");out.write("<input type='hidden' name='token' value='"+token+"'>");out.println("用戶名:<input type='text' name='username'>");out.println("<input type='submit' value='提交'>");out.println("</form>");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}class TokenProccessor{/**單態設計模式(保證類的對象在內存中只有一個)*1、把類的構造函數私有*2、自己創建一個類的對象*3、對外提供一個公共的方法,返回類的對象* */private TokenProccessor(){}private static final TokenProccessor instance = new TokenProccessor();public static TokenProccessor getInstance(){return instance;}public String makeToken(){  //checkException//  7346734837483  834u938493493849384  43434384String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + "";//數據指紋   128位長   16個字節  md5try {MessageDigest md = MessageDigest.getInstance("md5");byte md5[] =  md.digest(token.getBytes());//base64編碼--任意二進制編碼明文字符   adfsdfsdfsfBASE64Encoder encoder = new BASE64Encoder();return encoder.encode(md5);} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}}
表單處理Servlet

public class DoFormServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {boolean b = isToken(request);  //判斷用戶是否是重復提交if(b==true){System.out.println("請不要重復提交");return;}request.getSession().removeAttribute("token");System.out.println("處理用戶提交請求!!");}private boolean isToken(HttpServletRequest request) {String client_token = request.getParameter("token");if(client_token==null){return true;}String server_token = (String) request.getSession().getAttribute("token");if(server_token==null){return true;}if(!client_token.equals(server_token)){return true;}return false;}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}



轉載于:https://www.cnblogs.com/xj626852095/p/3648071.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259141.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259141.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259141.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦常見故障處理_彩超常見故障及維修

彩超是醫學檢測手段中重要的環節之一&#xff0c;是對產婦以及對病人進行內部組織和結構觀察的重要方式之一&#xff0c;彩超應用得當可以及早的診斷出病人的疾病&#xff0c;為患者解除疾病的困擾。彩超設備是一種極為先進的診斷系統&#xff0c;一般彩超系統包括以下幾個部分…

微軟歷史最高市值是多少?

有人說微軟在1999 年 12 月達到股價歷史最高點 $58.38并不準確。我1999年12月22日增加微軟&#xff0c;公司依照1999年12月27日的價格&#xff08;119.125&#xff0c;拆股后變為59.5625&#xff09;給了我一筆期權&#xff0c;這個價格&#xff0c;成為微軟股價空前絕后最高點…

京東2016校招編程題

記得有一個大題&#xff0c;說的是給定一個n*n的矩陣&#xff0c;要求從1開始填充矩陣&#xff0c;最后的矩陣是蛇形的。即如下&#xff1a; n3, 7 8 1 6 9 2 5 4 3 n4, 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 給出代碼&#xff1a; #incl…

leetcode21

/*** Definition for singly-linked list.* public class ListNode {* public int val;* public ListNode next;* public ListNode(int x) { val x; }* }*/ public class Solution {public ListNode MergeTwoLists(ListNode l1, ListNode l2) {//遞歸實現鏈表合并…

springmvc02

1&#xff0c;創建實體類對象User 注意要導入 bean-validator.jar 包 package com.yangw.springmvc.entity;import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.Range; im…

用基本信號畫出如下的信號_股市入門基本知識丨下跌時期可以抄底的安全信號有哪些...

點擊藍色字體 關注我們 帶來更多精彩股票市場中的秘籍其實就是“低買高賣”&#xff0c;不過我們不能在大盤一開始下跌的時候就進行買入&#xff0c;因為不清楚下跌的時間&#xff0c;太早介入&#xff0c;只有在反彈幅度超出我們介入的點的時候才可以進行高賣。那么什么時候才…

Flume數據傳輸事務分析[轉]

本文基于ThriftSource,MemoryChannel,HdfsSink三個組件&#xff0c;對Flume數據傳輸的事務進行分析&#xff0c;如果使用的是其他組件&#xff0c;Flume事務具體的處理方式將會不同。一般情況下&#xff0c;用MemoryChannel就好了&#xff0c;我們公司用的就是這個&#xff0c;…

最近的一些校招試題摘錄

最近又參加了一些校招&#xff0c;真是馬不停蹄啊。多參加考試是好的&#xff0c;可以不斷發現一些新的問題。下面摘錄一些我不太會的題。 1.volatile的作用是什么&#xff1f; 答案&#xff1a;volatile是類型修飾符&#xff0c;用它修飾的類型變量可能會被編譯器未知的因素…

yii2中的rules驗證規則

2019獨角獸企業重金招聘Python工程師標準>>> Rules驗證規則&#xff1a;required : 必須值驗證屬性||CRequiredValidator 的別名, 確保了特性不為空.[[字段名],required,requiredValue>必填值,message>提示信息];email : 郵箱驗證||CEmailValidator 的別名,確…

weblogic數據源配置的問題,weblogic密碼破解

weblogic 報錯 please increase XXX,得知是連接池出了問題&#xff0c;查看weblogic配置&#xff0c;發現沒有設置超時 查看oracle 當前session&#xff0c;可以看到連接的機器&#xff0c;用戶&#xff0c;當前執行的sqlid select * from v$session; select v$sql where sql_i…

自己寫的簡易多任務系統---基于pic18fxxx

這個工程只是實現了最簡單的OS任務調度&#xff0c;對于理解任務調度有點幫助。其實就是從UC/OS-II里面摘出來的&#xff0c;沒有原來的那么復雜&#xff0c;很精簡&#xff0c;但道理上是一樣的。工程中的CPU.C文件時直接拿Nathan Brown寫好的&#xff0c;因為關于PIC任務切換…

python語言整數類型-Python 的內置數值類型

Python 是一種敏捷的、動態類型化的、極富表現力的開源編程語言&#xff0c;可以被自由地安裝到多種平臺上。Python 代碼是被解釋的。如果您對編輯、構建和執行循環較為熟悉&#xff0c;則 Python 代碼對您來說更簡單。但是&#xff0c;請不要搞錯&#xff1a;Python 器可以是簡…

滴滴出行2016校招編程題

1. 給定一個m*n的數組&#xff08;m,n>2,數組值>0&#xff09;&#xff0c;要求選出和最大的子2*2數組。例如&#xff1a; 1 2 3 4 5 6 7 8 9 顯然和最大的2*2子數組是5 6;8 9.下面完成這個功能。 Input: &#xff08;m*n的數組&#xff09; 1 2 3 ; 4 5 6 ; 7 8 9 …

每天一個linux命令(22):find 命令的參數詳解

find一些常用參數的一些常用實例和一些具體用法和注意事項。 1&#xff0e;使用name選項&#xff1a; 文件名選項是find命令最常用的選項&#xff0c;要么單獨使用該選項&#xff0c;要么和其他選項一起使用。 可以使用某種文件名模式來匹配文件&#xff0c;記住要用引號將文件…

(WPF) DataGrid之綁定

通過ObservableCollection 綁定到 DataGrid. 1. 前臺Xaml. <DataGrid x:Name"dgMeasurements"HorizontalAlignment"Left"Margin"10,69,0,10"ItemsSource"{Binding}"AutoGenerateColumns"False"Width"370">…

程序=數據結構+算法

這句名言&#xff0c;我現在品來很有感覺&#xff0c;看看uc/os-II里面那些就緒表、查找最高優先級任務等等&#xff0c;算法設計的非常巧妙&#xff0c;整個OS都是圍繞著OS_TCB來運轉的&#xff0c;任務需要通信&#xff0c;那就在建立個OS_EVENT&#xff0c;通過.*OSTCBEvent…

去哪筆試兩題

1&#xff0c;a是一個有序數組&#xff0c;但經過向右移動數位&#xff0c;現在預在a中查找元素key的位置&#xff0c;如不存在&#xff0c;返回0。例如a[5,6.7.8,1,2,3,4]. 實現&#xff1a; 1 #quna12 def findPos(a,key):3 mina[0];4 for i in range(len(a)):5 …

MySQL5.6主從復制搭建基于日志(binlog)

什么是MySQL主從復制 簡單來說&#xff0c;就是保證主SQL&#xff08;Master&#xff09;和從SQL&#xff08;Slave&#xff09;的數據是一致性的&#xff0c;向Master插入數據后&#xff0c;Slave會自動從Master把修改的數據同步過來&#xff08;有一定的延遲&#xff09;&…

opengl 如何加陰影_動漫嘴唇厚涂如何繪制?厚涂嘴唇正確畫法

動漫嘴唇厚涂如何繪制&#xff1f;厚涂嘴唇正確畫法&#xff01;嘴巴怎么畫&#xff1f;畫嘴巴真的很考驗一個畫師功力&#xff0c;好看的嘴巴生動而豐滿&#xff0c;可以給整幅畫作添上亮點&#xff0c;而畫的不好的嘴巴呢&#xff0c;就容易把畫面整體的風格打破。那么零基礎…

位運算

我們復習一下位運算&#xff0c;這里介紹一下(& ,|, ^)的用途。 按位與 ------------& 規則&#xff1a; 0&00 0&10 1&0 0 1&11 &#xff08; 兩位為1&#xff0c;才是1&#xff09;作用&#xff1a; 清零與保位。通常用來將特定的位清零&…