在jsp中怎么实现登录后,自动跳转到登录前正浏览的页面

在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
解决方法二:


1 String referer = req.getHeader("Referer");

2 resp.sendRedirect(referer);
3 return;
4
5
上面两种方法不可取是因为,如果用户登录失败,再次登录的话就会出现登录后返回到登录的错误。


第三种:把你要在跳转时需要保存的信息存放在session变量中,登录后清除这个session。可行。

需要登录操作的页面上面添加:

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会话判断类,如果在线就继续执行,不在线则提示登录。所有的需要在线操作的
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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值