轉發到之前頁面

比如說,你有資源放在resource.jsp頁面上,讓用戶必須登陸後才能訪問。

所以用戶未登錄訪問資源時,便會跳到登錄頁面login.jsp,然後登錄成功直接跳轉到資源頁面。

servlet中,request.getHeader("referrer");可以得到上一次的請求地址。指通過鏈接而去訪問的資源。

只有通過鏈接訪問當前頁的時候,才能獲取上一頁的地址;

否則request.getHeader("referer")的值爲null,通過window.open打開當前頁或者直接輸入地址,也爲null。

request.getRequestURL();也可以得到上一次請求的地址,不管是鏈接還是提交表單。建議使用這種方式。

可以在資源訪問的servlet中

			String beforeLogin=new String(request.getRequestURL());
			request.getSession().setAttribute("beforeLogin",beforeLogin);
然後,在登陸的servlet中

		String beforeLogin=(String) request.getSession().getAttribute("beforeLogin");
		if("admin".equals(request.getParameter("name")))
		{
			request.getSession().setAttribute("name", "admin");
			if(beforeLogin==null){
				request.getRequestDispatcher("/loginSuccess.jsp").forward(request, response);
			}
			else{
				request.getRequestDispatcher(beforeLogin.substring(beforeLogin.indexOf("/servlet"))).forward(request, response);	
			}
		}


還有一種需求,就是進入一個頁面後,點擊一個鏈接,返回原來的頁面。比如,錯誤處理頁面,完全可以在裏面放一個鏈接,返回出錯之前的頁面。

在index.jsp中放置一個錯誤鏈接,

   <%
 	String lastAccessUrl = request.getRequestURL() + "?" + request.getQueryString();
 	session.setAttribute("last", lastAccessUrl);
 	%>
  
    This is my JSP page. <br>
     	 通過錯誤的鏈接:<a href="lalala">鏈接</a>     

然後配置web.xml,假設報404錯誤後,進入error.jsp頁面

  <error-page>
  	<error-code>404</error-code>
  	<location>/error.jsp</location>
  </error-page>
然後便可以在error.jsp中加入下面代碼:
  	返回剛纔的鏈接:<a href="${sessionScope.last}">通過鏈接登錄</a>
於是報錯後,便可以通過鏈接返回了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章