爲了防止重複登陸問題,這裏寫了個例子html
這裏我先說一下個人思路:java
首先進入頁面會請求某個控制器的index()方法,這段代碼就是我粘貼的第二段代碼,在請求index()方法以前會進CheckTokenInterceptor.class,進入這個方法建立blogToken,而後把值放入頁面的隱藏域裏,隨後進行登陸操做,登陸時會取blogToken的值,取到返回true,反之返回false,而後就確保重複登陸問題,進行登陸操做。
session
public class CheckTokenInterceptor implements Interceptor{ public void intercept(ActionInvocation ai) { //建立token,這裏是一進頁面會得到token的一個值,刷新頁面值會變化 ai.getController().createToken("blogToken"); ai.invoke(); } }
@Before({CheckTokenInterceptor.class}) public void index(){ ...//這裏是第一次進頁面出現的一些方法 render("/index.jsp"); } /** * 前臺登陸 */ public void login(){ boolean flag = this.validateToken("blogToken");//若是驗證是true,則表示第一次登陸,false表示重複登錄 if(flag){ User user = getModel(User.class); //把前臺須要的值根據getModel()放入一個實體中 String md5Pwd = MD5Encrypt.encode(user.getStr("pwd")); //轉換成md5加密格式 User uu = User.dao.checkLogin(user.getStr("account"),md5Pwd); if(uu == null){ render("/index.jsp"); }else { setSessionAttr("user", uu); //往session中賦值 render("/index.jsp");//重定向 } }else{ forwardAction("/user"); } }
這裏很重要的一點,頁面上jsp
<input type="hidden" name="blogToken" value="${blogToken}" />