Servlet过滤器找不到类异常

时间:2015-07-23 17:56:02

标签: java servlets

我正在尝试创建一个基本的servlet过滤器,我已经创建了过滤器并将其映射到web.xml文件中,但是找不到过滤器的异常。

这是web.xml文件

 <display-name>Disertation</display-name>
  <filter>
       <filter-name>AuthorizationFilter</filter-name>
        <filter-class>Disertation.servlets.AuthorizationFilter</filter-class>       
    </filter>   
    <filter-mapping>
        <filter-name>AuthorizationFilter</filter-name>
        <servlet-name>LoginServlet</servlet-name>
    </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

以下是过滤器类的路径:Disertation / src / servlets / AuthorizationFilter.java

我错过了什么或者我的配置错了吗?

编辑:我从web.xml中取出了com,这是过滤器类

    package servlets;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import JavaBeans.User;


/**
 * Servlet Filter implementation class AuthorizationFilter.
 * Its purpose is to check logged-in user's role and
 * and accordingly allow or prevent access to the web resources.
 */
public class AuthorizationFilter implements Filter {
    private FilterConfig filterConfig;

    /**
     * @see Filter#init(FilterConfig)
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig=filterConfig;
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
                throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        ServletContext sc= filterConfig.getServletContext();
     String username = request.getParameter("user");
     String pwd = request.getParameter("pwd");
     System.out.println("first check");

     User user = new User (username, pwd, "employee");
     System.out.println("is this getting here?");
     request.setAttribute("role", user.getRole());
        if (request.getAttribute("role").equals("employee")|| request.getAttribute("role").equals("admin")) 

            chain.doFilter(request, res);

    }


    /**
     * @see Filter#destroy()
     */
    @Override
    public void destroy() {
        filterConfig=null;
    }

}

2 个答案:

答案 0 :(得分:1)

您的过滤器应位于以下目录Disertation/src/com/Disertation/servlets/AuthorizationFilter.java下 匹配您的过滤器配置或将过滤器配置更改为

 <filter-class>servlets.AuthorizationFilter</filter- class> 

答案 1 :(得分:0)

您使用的是正确的套餐吗?在AuthorizationFilter.java中查找在文件顶部声明的包名称。然后将它放在你的web.xml中:

<filter-class>com.some.package.AuthorizationFilter</filter-class> 

此外,在连字符后面的结束标记中有一个空格