在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
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
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 %>
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 }
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);
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);