我正在尝试创建一个基本的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;
}
}
答案 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>
此外,在连字符后面的结束标记中有一个空格