Friday 7 September 2007

การใช้ Token เพื่อแก้ปัญหา การ กด refresh หรือ การกดปุ่ม submit ซ้ำ ๆ (2)

เทคนิคอีกอย่างหนึ่งในการใช้ Token ในการแก้ปัญหานี้ คือ การใช้ class TokenProcessor
ซึ่งหากใครใช้ Struts จะพบว่าในตัว Action ของ Struts จะมี field ชื่อ Token ที่เป็น Instance ของ Class TokenProcessor อยู่แล้วเราจึงสามารถใช้ method saveToken(), isTokenValid(), resetToken() ได้

แต่สำหรับผู้ที่ไม่ได้ใช้ Struts นั้น ก้อสามารถดัดแปลงมาใช้ได้เช่นเดียวกันโดยในหน้า forward.jsp มีหน้าที่ไปเรียก หน้า process.jsp, หรือ Servlet (ซึ่งทำหน้าที่ในส่วนของ business process)

ใน file forward.jsp เราจะแทรกโค๊ดเข้าไปดังนี้

<%@ page import="org.apache.struts.util.TokenProcessor" %> <% TokenProcessor token = TokenProcessor.getInstance(); token.saveToken(request); %>

ในส่วนของหน้า Servlet ที่ทำ business process นั้น จะแทรก โค๊ตดังนี้

if(isTokenValid(httpServletRequest)){
resetToken(httpServletRequest);
//ส่วนทำ business process
}

ถ้าเป็นหน้า proces.jsp ที่เป็น .jsp ในการทำBusiness process แทน Servlet จะแทรกโค๊ดดังนี้ ก็เป็นอันเรียบร้อยครับ

<%@ page import="org.apache.struts.util.TokenProcessor" %> <%
TokenProcessor token = TokenProcessor.getInstance();
if(token.isTokenValid(httpServletRequest)){
token.resetToken(httpServletRequest); //ส่วนทำ business process
.........................................
}
%>

No comments: