【问题标题】:ClasscastException : MyClass cannot be cast to javax.servlet.FilterClasscastException : MyClass 不能转换为 javax.servlet.Filter
【发布时间】:2015-02-10 21:36:01
【问题描述】:

我正在尝试为身份验证设置过滤器。

我的Filter类如下

public class AuthenticationFilter extends HttpServlet{

    /**
     * 
     */
    private static final long serialVersionUID = -7678740843612123432L;

    public void destroy() {
        // TODO Auto-generated method stub

    }
   ///Other methods...
    public void doFilter(HttpServletRequest request, HttpServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        Map<String,String> map = getHeadersInfo(request);

        chain.doFilter(request, response);
    }
        ///Other methods.

对应的web.xml如下。

 <filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.mypackage.AuthenticationFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在搜索中,我发现很多人因为pom.xml中的不正确依赖关系而面临这个问题。但我确保相应的 jar 具有provided 范围。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
</dependency>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
</dependency>
<!-- Other dependencies-->

对我可能做错的事情有什么想法吗?链接/建议表示赞赏。

【问题讨论】:

  • 如果是filter,不需要实现Filter吗?tutorialspoint.com/servlets/servlets-writing-filters.htm
  • 知道了,我不太习惯将ServletRequest 转换为HttpServletRequest,但似乎没有办法。
  • 一一进行,首先确保您的Filter编译正常,然后您可以将ServletRequest处理为HttpServletRequest。
  • 它工作正常,谢谢。但这是最佳做法吗?
  • 过滤身份验证?一般来说,过滤器检查请求并决定下一步,它们自己不做任何身份验证逻辑。

标签: java maven servlets servlet-filters


【解决方案1】:

你的过滤器应该implement它声称的Filter接口,而不是extend HttpServlet,除非你将这两个函数合并到一个类中,这不是一个好主意.

【讨论】:

  • 不敢相信我忘了添加工具并没有抓住它。谢谢你,为我节省了一些故障排除时间。
猜你喜欢
  • 2012-11-20
  • 2014-08-23
  • 2020-03-17
  • 2017-05-08
  • 2013-03-20
  • 1970-01-01
  • 2014-09-08
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多