我在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
输入状态报告
message /PokemonsShop/login.jspx
说明请求的资源不可用。
答案 0 :(得分:0)
filterConfig.getServletContext().getRequestDispatcher
采用绝对路径而不是request-getRequestDispatcher
。虽然这是否是我不能说的解决方案。
答案 1 :(得分:0)
看到你的信息后,有两件事情发生了: 1)您是否检查客户端对象是否为空?可能在执行登录操作(方法)时,您没有正确设置客户端进入会话? 2)在服务器错误中,它显示“未找到/PokemonsShop/login.jspx”,但在您的过滤器映射中,您提到/ jsp / xxx。是因为您的登录页面位于文件夹jsp下,并且您正在重定向(在过滤器中)到/PokemonsShop/login.jspx,它应该在webapp根文件夹下可访问。 希望他们中的一个能够提供帮助