【问题标题】:Session Filter redirect trouble会话过滤器重定向问题
【发布时间】:2012-12-04 01:58:49
【问题描述】:

我在 java web 中遇到了 AccessFilter 的问题。当我调用 /main.jspx 时,它会重定向到 login.jsp。但是当我尝试登录时出现了一些错误

public class AccessFilter implements Filter {

    private FilterConfig filterConfig;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpSession session = ((HttpServletRequest) request).getSession();
        HttpServletResponse res = (HttpServletResponse) response;
        Client client = (Client) session.getAttribute("client");        
        if (client != null) {
            chain.doFilter(request, response);
        } else {
            RequestDispatcher dispatcher = request.getRequestDispatcher(
                    ConfigurationManager.getInstance().getProperty(ConfigurationManager.LOGIN_PAGE_PATH));
            dispatcher.forward(request, response);
        }
    }

    @Override
    public void destroy() {
        this.filterConfig = null;
    }

}

web.xml:

<filter>
    <filter-name>AccessFilter</filter-name>
    <filter-class>ua.kpi.shop.filter.AccessFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>AccessFilter</filter-name>
    <url-pattern>/jsp/main.jspx</url-pattern>
    <url-pattern>/jsp/pokemons.jspx</url-pattern>
</filter-mapping>

错误: HTTP 状态 404 - /PokemonsShop/login.jspx

输入状态报告

消息/PokemonsShop/login.jspx

说明请求的资源不可用。

【问题讨论】:

  • 通常在您的服务器输出中,您将找到未找到文件的完整本地路径,您将能够找到问题所在。

标签: java session jakarta-ee servlet-filters


【解决方案1】:

看到您的消息时,我想到了两件事: 1)您是否检查了客户端对象是否为空?可能是在执行登录操作(方法)时,您没有将客户端正确设置为会话? 2)在服务器错误中,它显示“未找到/PokemonsShop/login.jspx”,但在您的过滤器映射中您提到了/jsp/xxx。会不会是因为您的登录页面位于 jsp 文件夹下,并且您正在(在过滤器中)重定向到 /PokemonsShop/login.jspx,它应该位于 webapp 根文件夹下才能访问。 希望其中一位能有所帮助

【讨论】:

    【解决方案2】:

    filterConfig.getServletContext().getRequestDispatcher 采用绝对路径,而不是 request-getRequestDispatcher。虽然这是否是我不能说的解决方案。

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 2015-10-08
      • 2011-06-26
      • 2011-10-20
      • 2015-09-17
      • 1970-01-01
      • 2015-05-22
      • 2016-10-14
      相关资源
      最近更新 更多