java程序实现登陆。用户没有登录但访问非登录的页面,使用过滤器跳转到登录页,登录后怎么回到访问页?
比如访问的页面是SecretChange.html.由于没有登录需要跳转到login.html.那么经过滤器的时候会转到login.html。登录完了以后比较方便的是直接...
比如访问的页面是SecretChange.html. 由于没有登录需要跳转到login.html.那么经过滤器的时候会转到login.html。登录完了以后比较方便的是直接跳转到首页-home.html.
但是这样是不人性化的,所以想请教怎么成功的进入过滤器,执行页面跳转和登录,还能在登陆后取得SecretChange.html的访问初始页。谢谢大家 展开
但是这样是不人性化的,所以想请教怎么成功的进入过滤器,执行页面跳转和登录,还能在登陆后取得SecretChange.html的访问初始页。谢谢大家 展开
3个回答
展开全部
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");
}
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来完成页面的跳转,而跳转之后的正是他下一步要访问的页面,
你要是想弄清楚存的是什么,在控制台打印一下不就知道了吗
展开全部
公共无效的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的”); />}
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的”); />}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先sharePreferences是以键值对的方式保存数据,取的时候只要取到key就可以了。自动登陆的选择框一般是checkbox。当然如果要验证是否登陆成功,是需要跟服务器进行数据交互的。以上是保存数据的方法。下面是界面切换的问题:登陆界面和主页是两个不同的界面,这个需要intent进行跳转到不同的activity界面上。这个地方要加判断,判断用户是否登录。判断的方法就是从sharePreferences取出key后,如果sharePreferences每数据就进入到登录界面,如果sharePreferences有数据就进入到主页。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询