用AJAX實現“防止未登陸人員訪問指定頁面”的功能
阿新 • • 發佈:2017-07-29
dir ive 重定向 oca 憑據 cookies resp 跳轉 nload
為了保護科協官網不被未登錄的同學訪問,用ajax進行判斷和跳轉
小知識:用ajax訪問的servlet的任何跳轉都是無效的,所以跳轉只能在js代碼中進行
以下是servlet代碼
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter();// 若膽敢用首頁url想直接進入首頁,則進入get方法,然後重定向回登陸頁面 Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("KXlogin_username".equals(cookie.getName())) {//找到登陸過的證據(cookie) //request.getRequestDispatcher("/kxpro_homePage/index.html").forward(request,response);// 轉發請求至首頁(隱藏首頁url) //response.sendRedirect("/KXpro/kxpro_homePage/index.html"); out.print("AnUser");break; } else { } } }else{ out.print("NoCookie"); //response.sendRedirect("/KXpro/kxpro_login/index.html");// 重定向回登陸頁面 } }
說明:從瀏覽器拿到cookie進行判斷是否登錄,有登陸就有cookie,沒登陸就沒有cookie,當看見這個cookie時馬上out一串"AnUser",然後break出循環結束訪問服務器,那麽服務器就返回"AnUser"。
沒有登陸過的有兩種情況一種是瀏覽器有cookie但沒有登錄信息的cookie,另一種情況是根本就沒有cookie,這兩種情況前者返回空串,後者返回"NoCookie"串,然後以此為憑據在js中判斷。
==================================================================================================================================
下面是js代碼
<body onload="homePageLoad()"> function createXMLHttpRequest() { var xmlHttp; // 適用於大多數瀏覽器,以及IE7和IE更高版本 try { xmlHttp = new XMLHttpRequest(); } catch (e) { // 適用於IE6 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { // 適用於IE5.5,以及IE更早版本 try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } return xmlHttp; } function homePageLoad() { var xmlHttp = createXMLHttpRequest(); xmlHttp.open("GET", "/KXpro/servlet/LoginServlet", true); xmlHttp.send(null); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { //到這裏就表示通訊成功,可以任意拿到text或者xml //使用var txt=xmlHttp.responseText; 獲得text,text可以使json串 //使用var xmls=xmlHttp.responseXML; 獲得xml,不過解析起來比較麻煩 var txt = xmlHttp.responseText; if (txt == "AnUser")//判斷是否有登陸過的cookie { //有登陸過,什麽也不做 } else { window.location.href = "/KXpro/kxpro_login/index.html";//跳轉到首頁 } } } }
整個ajax大框架在 http://www.cnblogs.com/sovagxa/articles/7241671.html 說的很清楚,就不再贅述了
拿到text串之後直接判斷是否要跳轉就行 跳轉代碼:
window.location.href = "/KXpro/kxpro_login/index.html";//跳轉
用AJAX實現“防止未登陸人員訪問指定頁面”的功能