VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 848|回复: 5

问个filter问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-4 12:00:01 | 显示全部楼层 |阅读模式
我用一个filter来过滤用户登陆的session是否为空,如果为空就自动跳转到登陆页面。

我把所有的页面都放在了index目录下,在filter的xml配置里这样写
<url-pattern>/index/*</url-pattern> 然后得到了我要的结果。

但我现在要index目录中的某一个页面home.jsp不被filter过滤,其他页面被filter过滤,应该怎样写呢?
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-22 10:45:01 | 显示全部楼层
你还是把home.jsp放到index目录外边吧!
回复

使用道具 举报

0

主题

63

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-3-23 14:30:02 | 显示全部楼层
filter可以配置参数,
你可以配置一个参数叫exclusion,中间用逗号隔开,记录在里面的路径,虽然进入了filter,但是不做处理

比如
<filter>
.....
        <init-param>
                <param-name>exclusions</param-name>
                <param-value>/, /index.jsp, /login.do, /logout.do, /test.jsp</param-value>
        </init-param>
</filter>

filter

public class MyFilter implements Filter {
  Set exclusions;
  public void init(FilterConfig filterConfig) throws ServletException {
    super.init(filterConfig);
    String exclu = filterConfig.getInitParameter("exclusions");
    exclusions = new HashSet();
    // split operations
  }

    public void doFilter(ServletRequest request,
                       ServletResponse response,
                       FilterChain chain) throws IOException, ServletException {

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    if (!exclusions.contains(httpRequest.getServletPath())) {
      // 原来的操作
    }
}
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-4-1 19:30:01 | 显示全部楼层
如果只是一个请求是例外,那么可以在filter里判断请求地址
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-4-3 15:30:02 | 显示全部楼层
楼上的楼上正解.
不过最好还是按目录分开过滤和不过滤的页面.
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-4 13:45:01 | 显示全部楼层
2樓和3樓的都可以解決你的問題
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表