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

比如访问的页面是SecretChange.html.由于没有登录需要跳转到login.html.那么经过滤器的时候会转到login.html。登录完了以后比较方便的是直接... 比如访问的页面是SecretChange.html. 由于没有登录需要跳转到login.html.那么经过滤器的时候会转到login.html。登录完了以后比较方便的是直接跳转到首页-home.html.
但是这样是不人性化的,所以想请教怎么成功的进入过滤器,执行页面跳转和登录,还能在登陆后取得SecretChange.html的访问初始页。谢谢大家
展开
 我来答
剑香飘雨
推荐于2017-09-20 · TA获得超过515个赞
知道小有建树答主
回答量:172
采纳率:100%
帮助的人:129万
展开全部
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来完成页面的跳转,而跳转之后的正是他下一步要访问的页面,
你要是想弄清楚存的是什么,在控制台打印一下不就知道了吗
百度网友c583ba3a1
2013-04-01 · TA获得超过517个赞
知道小有建树答主
回答量:3560
采纳率:0%
帮助的人:700万
展开全部
公共无效的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的”); />}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御绿戎0EY
2017-03-27 · TA获得超过3.8万个赞
知道大有可为答主
回答量:2.7万
采纳率:38%
帮助的人:1282万
展开全部
  1. 首先sharePreferences是以键值对的方式保存数据,取的时候只要取到key就可以了。自动登陆的选择框一般是checkbox。当然如果要验证是否登陆成功,是需要跟服务器进行数据交互的。以上是保存数据的方法。下面是界面切换的问题:登陆界面和主页是两个不同的界面,这个需要intent进行跳转到不同的activity界面上。这个地方要加判断,判断用户是否登录。判断的方法就是从sharePreferences取出key后,如果sharePreferences每数据就进入到登录界面,如果sharePreferences有数据就进入到主页。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式