在jsp中怎么實現登錄后,自動跳轉到登錄前正瀏覽的頁面?就像csdn的一樣, 2 PrintWriter out = response.getWriter();
3 4 out.println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">"); 7 8 out.println("<HTML>"); 9 11 12 out.println(" <BODY>"); 13 16 out.println("<script>history.go(-1);history.go(0);</script>"); 19 20 out.println(" </BODY>"); 21 22 out.println("</HTML>"); 23 24 out.flush(); 25 26 out.close(); 27 28 return null; 29 解決方法二: 2 resp.sendRedirect(referer);
3 return; 4 5 上面兩種方法不可取是因為,如果用戶登錄失敗,再次登錄的話就會出現登錄后返回到登錄的錯誤。 1 <%
2 if(session.getAttribute("party")== null){ 3 if(null != request.getQueryString()) 4 session.setAttribute("redirectUrl", request.getRequestURL().append("?").append(request.getQueryString()).toString()); 5 else 6 session.setAttribute("redirectUrl", request.getRequestURL().toString()); 7 response.sendRedirect(request.getContextPath() + "/loginto"); 8 } 9 %> 在登錄處理頁面: 1 String redirectUrl = (String)req.getSession().getAttribute("redirectUrl");
2 if(StringUtils.isValid(redirectUrl)){ 3 req.getSession().removeAttribute("redirectUrl"); 4 resp.sendRedirect(redirectUrl); 5 } 第四種方法:寫一個servlet會話判斷類,如果在線就繼續(xù)執(zhí)行,不在線則提示登錄。所有的需要在線操作的 servlet都集成此類,這樣就不需要上面那么在每個頁面寫上這些代碼了,可以集中控制。這種方式比較完整。 HttpSession session = request.getSession();
if (session.getAttribute("person") == null) { if (null != request.getQueryString()) session.setAttribute("redirectUrl", request.getRequestURL().append("?").append(request.getQueryString()).toString()); else session.setAttribute("redirectUrl", request.getRequestURL() .toString()); response.sendRedirect(request.getContextPath() + "/login.jsp"); return null; } return process(config, request, response); |
|