日期:2014-05-18  浏览次数:20657 次

如何阻止手写url跳转
在我的工程里有一个装一些需要显示的html,

现在手动输入html的地址就能打开html。

现在希望如果没有登陆的话,手动输入html地址跳转到login画面。

请问各位高手怎么在web.xml里配置,或者有其他什么方法。

------解决方案--------------------
登录后把用户信息存session里面
每次进入页面时判断session,如果为空,则跳转至login页面
------解决方案--------------------
过滤器,采用 /* 形式进行过滤,在Filter中判断session中是否为空,通过URI排除登录页面。

过滤器中的doFilter方法基本上如下:

Java code
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    HttpServletRequest httpRequest = (HttpServletRequest)request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    HttpSession session = httpRequest.getSession();
    if(session.getAttribute(ApplicationSource.USER) == null
            && !httpRequest.getRequestURI().endsWith("/login.jsp") // 这些都是一些需要排除的页面
              && !httpRequest.getRequestURI().endsWith("/calendar/")
            && (httpRequest.getRequestURI().indexOf("/calendar/img") < 0)
            && (httpRequest.getRequestURI().indexOf("/calendar/resources") < 0)
            && (httpRequest.getRequestURI().indexOf("/calendar/servlet") < 0)
            && !httpRequest.getRequestURI().endsWith("/login.do")){
        httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.jsp");
    }    
    chain.doFilter(request, response);
}