java程序实现登陆。用户没有登录但访问非登录的页面,使用过滤器跳转到登录页,登录后怎么回到访问页?

比如访问的页面是SecretChange.html. 由于没有登录需要跳转到login.html.那么经过滤器的时候会转到login.html。登录完了以后比较方便的是直接跳转到首页-home.html.
但是这样是不人性化的,所以想请教怎么成功的进入过滤器,执行页面跳转和登录,还能在登陆后取得SecretChange.html的访问初始页。谢谢大家

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
if(req.getSession().getAttribute("user")==null){
req.setAttribute("error", "请你先登录");
//非法请求才会进到这里面,在这里保存请求的url地址,在成功登录后再进行跳转
req.getSession().setAttribute("goUrl", req.getRequestURL()+"?"+ req.getQueryString());
request.getRequestDispatcher("/ulogin.jsp").forward(request, response);
}

else{
chain.doFilter(request, response);
}
}
上面的代码是过滤器中的代码
下面的是servlet中的代码
if(request.getSession().getAttribute("goUrl")!=null){
String url = (String)request.getSession().getAttribute("goUrl");
response.sendRedirect(url);
}
else{
response.sendRedirect("/webshopping/index.jsp");
}追问

req.getQueryString()存的是SecretChange.html的相关信息。

req.getRequestURL()存的是login.html的地址是吧?

另外想问一句:
request.getRequestDispatcher("/ulogin.jsp").forward(request, response);
这句话的中的login.jsp可以换成任意的其他页面吗?
还是说这句话的意思是完成跳进"。。。"里面设置页面的前一个页面。

追答

login.jsp是登录页面,前面判断的是user为空即没有登录,所以让他跳到登录页面!!而url保存的是你登录之前要访问的页面,也正是你要解决的问题,在servlet中再进行判断,通过在session中取得url来完成页面的跳转,而跳转之后的正是他下一步要访问的页面,
你要是想弄清楚存的是什么,在控制台打印一下不就知道了吗

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-01
公共无效的doFilter(ServletRequest的要求,ServletResponse的响应,FilterChain的链)抛出IOException,ServletException异常{
HttpServletRequest的REQ =(HttpServletRequest的)要求;

(req.getSession()。的getAttribute(“用户”)== NULL){

req.setAttribute(“错误”,“请记录);

/ /非法的请求后,它一直在那里保存的URL地址的请求,在成功登录后跳 req.getSession()的setAttribute(“:goUrl req.getRequestURL()+”“+ req.getQueryString());要求

。 getRequestDispatcher(/ ulogin.jsp“)。向前(请求,响应);

}

其他{

chain.doFilter(请求,响应);

}

}

代码上述过滤器的代码

以下是servlet代码

(request.getSession()。的getAttribute(“goUrl)!= NULL){

字符串URL =(字符串)request.getSession() 。的getAttribute(“goUrl”);

response.sendRedirect是(URL);

}

其他{
response.sendRedirect是(“/ webshopping / index.jsp的”); />}
第2个回答  2017-03-27

    首先sharePreferences是以键值对的方式保存数据,取的时候只要取到key就可以了。自动登陆的选择框一般是checkbox。当然如果要验证是否登陆成功,是需要跟服务器进行数据交互的。以上是保存数据的方法。下面是界面切换的问题:登陆界面和主页是两个不同的界面,这个需要intent进行跳转到不同的activity界面上。这个地方要加判断,判断用户是否登录。判断的方法就是从sharePreferences取出key后,如果sharePreferences每数据就进入到登录界面,如果sharePreferences有数据就进入到主页。

相似回答