转发到之前页面

比如说,你有资源放在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>
于是报错后,便可以通过链接返回了。


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