Token

年紀大了,一堆少用的東西忘了差不多,更慘的是不清楚自己忘了啥!所以有的沒的都拿來這記一記~~

 

<%
/**
 * <p>Title: TokenSample.jsp</p>
 * <p>Description: 單一頁面設置Token範例<br>
 * <p>重點在於網頁refresh時,request裡的Token會是舊的!而使用submit則會是新的!
 * <p>Copyright: </p>
 * <p>Company: </p>
 *
 * @author Kirk Hsu
 * @version 1.0 Created.
 *
 */
%>
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%
try{	
	String txSn = request.getParameter("TX_SN");
	String email = request.getParameter("EMAIL");
	String mailType = request.getParameter("MAIL_TYPE");
	
	System.out.println(txSn);
	System.out.println(email);
	System.out.println(mailType);
	
	String tokenA = (String)session.getAttribute("token");
	
	// refresh時這裡會取到舊的token
	String tokenB = request.getParameter("token");
	
	System.out.println("Token in session:" + tokenA);
	System.out.println("Token in request:" + tokenB);
	
	// realtime token
	String token = "";
	
	if(txSn != null && !"".equals(txSn) && email != null && !"".equals(email) && 
                         mailType != null && !"".equals(mailType)){
		if(tokenA!=null && tokenA.equals(tokenB)){
			
			// do something...
			
			// 移除舊token
			System.out.println("Remove token:"+tokenA+" from session.");
			session.removeAttribute("token");
			
			// 設定新token
			token = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
			System.out.println("Save token:"+token+" to session.");
			session.setAttribute("token",token);
			
		}else{
			System.out.println("重覆送出!!");
			
			// 注意!這裡還得補上,不然hidden裡的token就不見了!
                        // 那submit時,request的token就變成空的!!
			// 為了讓submit時,session和request裡的token相同,
                        // 所以hidden裡放的token要和session裡的相同!
			token = tokenA;
		}
		
	}else{
		// 設定新token
		token = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
		System.out.println("Save token:"+token+" to session.");
		session.setAttribute("token",token);
	}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</head>
<body>

<form name="form1" action="TokenSample.jsp" method="post">
	<fieldset>
		<legend>EMAIL測試</legend>
		TX_SN:<input type="text" name="TX_SN"><br>
		EMAIL:<input type="text" name="EMAIL"><br>
		<select name="MAIL_TYPE">
			<option value=1>AAA</option>
			<option value=2>BBB</option>
			<option value=3>CCC</option>
		</select>
		<input type="hidden" name="token" value="<%=token%>"/>
		<input type="submit" value="送出"/>
		<br/>
	</fieldset>
</form>

</body>
</html>
<%
}catch(Exception e){
	e.printStackTrace();
}
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值