在jsp中怎么实现登录后,自动跳转到登录前正浏览的页面?就像csdn的一样,
在jsp中怎么实现登录后,自动跳转到登录前正浏览的页面?就像csdn的一样,不管你从哪能个页面登录,成功登录后会自动跳转回那个页面。解决方法一:登录处理后,返回如下内容:???2?PrintWriter?out?=?response.getWriter();
解决方法二:????1?String?referer?=?req.getHeader("Referer");2 resp.sendRedirect(referer);上面两种方法不可取是因为,如果用户登录失败,再次登录的话就会出现登录后返回到登录的错误。第三种:把你要在跳转时需要保存的信息存放在session变量中,登录后清除这个session。可行。需要登录操作的页面上面添加:<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1?<%
在登录处理页面:<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1?String?redirectUrl?=?(String)req.getSession().getAttribute("redirectUrl");
第四种方法:写一个servlet会话判断类,如果在线就继续执行,不在线则提示登录。所有的需要在线操作的servlet都集成此类,这样就不需要上面那么在每个页面写上这些代码了,可以集中控制。这种方式比较完整。HttpSession?session?=?request.getSession();
很常见的一个应用就是访问某个页面,因为权限不够,进入登陆页面。人性化的设计是能够在登陆之后,系统跳转到用户原本需要访问的页面。这可以借助拦截器来实现。
在我们验证用户登陆的拦截器里面获取请求地址,并存入session。
在用户登陆的action中加入字符串类型的prePage属性,用来存储拦截器放入session的prePage值(即登陆前的请求地址)。
嗯,一个小技巧,希望对大家有用。
?
我的方法
HttpServletRequest request= (HttpServletRequest)invocation.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
??System.out.println(request.getRequestURI());
??//HttpServletResponse? resp=(HttpServletResponse)invocation.get
//??request.getParameterMap();
??String queryString = request.getQueryString();
??//获取服务器地址
??String basePath = request.getScheme() + "://"
??+ request.getServerName() + ":" + request.getServerPort();
//??// 预防空指针
??if (queryString == null) {
???queryString = "";
??}
??String realPath = request.getRequestURI() + "?" + queryString;
??System.out.println(basePath+realPath);
struts.xml配置
??<interceptors>
???<interceptor name="loginInterceptor" />
????<interceptor-ref name="loginInterceptor"/>
???</interceptor-stack>
??</interceptors>
?
?<!--用action页面-->
??<action name="showUpload" method="showUpload">
???<interceptor-ref name="baseStack"/>
???<result name="success" >/WEB-INF/wenku/uploaddoc.jsp</result>
??</action>?