首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么使用filter实现未登录用户自动跳转到登录页面(答案)

2011-12-31 
如何使用filter实现未登录用户自动跳转到登录页面(在线等答案)工程要实现未登录的用户统一跳转到某一页面,

如何使用filter实现未登录用户自动跳转到登录页面(在线等答案)
工程要实现未登录的用户统一跳转到某一页面,这个我想在filter里取到当前用户,如果取不到则跳转到登录页面,但是我在filter中使用((HttpServletResponse)response).sendRedirect("/index.jspx");和request.getRequestDispatcher("/index.jspx").forward(request,response);均不能跳转到登录页面,请问可能是哪里出了问题。
还有没有其他方法实现这功能。
在线等答案

[解决办法]
HttpServletResponse httpServletResponse = (HttpServletResponse) resp; 
HttpServletRequest httpServletRequest = (HttpServletRequest) req; 
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/index.jsp");

你的怎么是index.jspx?
jspx是啥?
[解决办法]
要注意以下几点:
1、要用filter做权限拦截,一定要将拦截的资源放到某一目录下,或文件名用统一的前缀编码,否则((HttpServletResponse)response).sendRedirect("/index.jspx")会死循环
做法:一般都在web.xml中的<filter-mapping>的<url-pattern>标签中指定

2、当检查到是登录状态的,是否调用了chain.doFilter(request,response)放行

3、当用((HttpServletResponse)response).sendRedirect("/index.jspx")跳转时,则不需要调用chain.doFilter(),但后面的代码不会处理,一般会跟上个return语句来结束处理。
[解决办法]

Java code
public class LoginFilter implements Filter{    public void destroy() {        // TODO Auto-generated method stub            }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        // TODO Auto-generated method stub        HttpServletRequest req = (HttpServletRequest) request;        HttpServletResponse resp = (HttpServletResponse) response;        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        HttpSession session = req.getSession();        StringBuffer url = req.getRequestURL();        String login = (String) session.getAttribute("login");            if (login!=null) {                     //如果已经等了通过            chain.doFilter(request, response);        }else if (url.indexOf("login.do")>0||url.indexOf("login.jsp")>0) {                          //可以访问jsp,也可以访问login。do对应的servlet,通过            chain.doFilter(request, response);        }                else {                        resp.sendRedirect("/3G/login/login.jsp");        }            }    public void init(FilterConfig filterConfig) throws ServletException {        // TODO Auto-generated method stub            }    }
[解决办法]
Java code
package group3.tsims.tools;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class AdminAuthorityFilter implements Filter {    /*     * (non-Javadoc)     * @see javax.servlet.Filter#destroy()     */        public void destroy() {                    }    /*     * (non-Javadoc)     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)     */        public void doFilter(ServletRequest request, ServletResponse response,                FilterChain chain) throws IOException, ServletException {            HttpServletRequest req = (HttpServletRequest)request;            HttpServletResponse res = (HttpServletResponse)response;            HttpSession session = req.getSession(true);            //??session??????????遧??昞?            String username = (String)session.getAttribute("username");            //???????????????????釚??????????????????酖?                            if("".equals(username) || username == null){                //?????????酖?                                      res.sendRedirect("/TSIMS/NoAuthority.jsp");            }else{                if(!"40".equals(username.substring(0,2)))                 {                      res.sendRedirect("/TSIMS/NoAuthority.jsp");                   }else{                   //????????,?????????                      chain.doFilter(request,response);                 }                      }              }    /*     * (non-Javadoc)     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)     */        public void init(FilterConfig config) throws ServletException {                    }} 

热点排行