struts2在web.xml中配置自定义的Filter后访问所有页面都报404错误

iii_am_haomiaozi 2018-10-25 04:26:34
struts2框架下的工程,在web.xml中配置struts2的核心Filter,工程运行一切正常。
但是自己写了一个过滤器AccessFilter(功能是不允许未登录用户访问除登录和注册页面外的其他任何页面),
将其配置到web.xml中后,访问工程中的任何页面都报404错误。
这是为什么呢?网上查了好久,也还是解决不了,谁能帮帮我

引入的包:


web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>struts-prj3</display-name>
<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>
<!-- 定义自定义过滤器AccessFilter -->
<filter>
<filter-name>accessFilter</filter-name>
<filter-class>cn.edu.zjut.filters.AccessFilter</filter-class>
</filter>
<!-- 让AccessFilter过滤所有SP页面 -->
<filter-mapping>
<filter-name>accessFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 定义Struts2 的核心Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts2 的核心Filter 拦截所有请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


AccessFilter.java文件:

package cn.edu.zjut.filters;

import java.io.IOException;
import java.nio.file.DirectoryStream.Filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class AccessFilter implements Filter<Object>
{
public FilterConfig config;
public void destroy() {
// TODO Auto-generated method stub
this.config=null;
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
config = filterConfig;
}

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain filterChain) throws IOException, ServletException
{
System.out.println("Access Filter executed!");
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();
if(session.getAttribute("user")== null && request.getRequestURI().indexOf("login.jsp")==-1 && request.getRequestURI().indexOf("register.jsp")==-1)
{
response.sendRedirect("login.jsp");
return ;
}
filterChain.doFilter(arg0, arg1);

}
@Override
public boolean accept(Object entry) throws IOException {
// TODO Auto-generated method stub
return false;
}
}
...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iii_am_haomiaozi 2018-10-25
  • 打赏
  • 举报
回复
应该是没有,控制台没有打印出进入的信息
天涯若风 2018-10-25
  • 打赏
  • 举报
回复
有进入到拦截器里面嘛
iii_am_haomiaozi 2018-10-25
  • 打赏
  • 举报
回复
还是不行,之前也这么试过了
天涯若风 2018-10-25
  • 打赏
  • 举报
回复
你自定的过滤器,改成 <url-pattern>/*</url-pattern> 试下

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧