java Filter过滤器例外URL设置
在web.xml声明的一个filter中:
<!– session过滤filter –>
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>
com.iqbon.jcms.web.util.SessionFilter
</filter-class>
<init-param>
<param-name>excludedPages</param-name>
<param-value>/admin/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
可以看到url-pattern的设置里面过滤的url规则是/admin/*,如果要把/admin/login.do排除在过滤url之外。
可以结合init-param的初始化参数和HttpServletRequest的getServletPath()方法来判断。
<init-param>
<param-name>excludedPages</param-name>
<param-value>/admin/login.do</param-value>
</init-param>
其次在filter的Java代码中加上判断:
import java.io.IOException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import com.iqbon.jcms.util.KeyConstant; /**
* session过滤器
*/ public class SessionFilter implements Filter { /**
* 需要排除的页面
*/ private String excludedPages;
private String[] excludedPageArray; /**
* @see Filter#destroy()
*/ public void destroy() {
return;
} /**
* 对session进行判断当前访问是否有登录
*/ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
boolean isExcludedPage = false;
for (String page : excludedPageArray) {//判断是否在过滤url之外
if(((HttpServletRequest) request).getServletPath().equals(page)){
isExcludedPage = true;
break;
}
} if (isExcludedPage) {//在过滤url之外
chain.doFilter(request, response);
} else {//不在过滤url之外,判断session是否存在
HttpSession session = ((HttpServletRequest) request).getSession();
if (session == null || session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) {
((HttpServletResponse) response).sendRedirect(“/login.htm”);
} else {
chain.doFilter(request, response);
}
}
} /**
* 初始化函数,获取需要排除在外的url
*/ public void init(FilterConfig fConfig) throws ServletException {
excludedPages = fConfig.getInitParameter(“excludedPages”);
if (StringUtils.isNotEmpty(excludedPages)) {
excludedPageArray = excludedPages.split(“,”);
}
return;
}
}
http://blog.csdn.net/Error_case/article/details/41946449
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.commons.lang3.StringUtils;
- import com.iqbon.jcms.util.KeyConstant;
- /**
- * session过滤器
- */
- public class SessionFilter implements Filter {
- /**
- * 需要排除的页面
- */
- private String excludedPages;
- private String[] excludedPageArray;
- /**
- * @see Filter#destroy()
- */
- public void destroy() {
- return;
- }
- /**
- * 对session进行判断当前访问是否有登录
- */
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- boolean isExcludedPage = false;
- for (String page : excludedPageArray) {//判断是否在过滤url之外
- if(((HttpServletRequest) request).getServletPath().equals(page)){
- isExcludedPage = true;
- break;
- }
- }
- if (isExcludedPage) {//在过滤url之外
- chain.doFilter(request, response);
- } else {//不在过滤url之外,判断session是否存在
- HttpSession session = ((HttpServletRequest) request).getSession();
- if (session == null || session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) {
- ((HttpServletResponse) response).sendRedirect(“/login.htm”);
- } else {
- chain.doFilter(request, response);
- }
- }
- }
- /**
- * 初始化函数,获取需要排除在外的url
- */
- public void init(FilterConfig fConfig) throws ServletException {
- excludedPages = fConfig.getInitParameter(“excludedPages”);
- if (StringUtils.isNotEmpty(excludedPages)) {
- excludedPageArray = excludedPages.split(“,”);
- }
- return;
- }
- }
java Filter过滤器例外URL设置的更多相关文章
- Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)
Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...
- Java Filter过滤器的简单总结
1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...
- java filter过滤器及责任链设计模式
什么是Filter? Filter属于sevlet规范,翻译为过滤器. Filter在web开发中有什么作用? 案例一:一个web站点只有用户登录才能继续访问该站点的资源,那么需要用户每次访问都判断是 ...
- 【Servlet】Java Serlvet Filter 过滤器
Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...
- JAVA中的使用Filter过滤器设置字符集
Filter是什么? Filter不是一个Servlet,它可以叫做Servlet链,它可以用来改变一个request,修改一个response.它虽然不能产生一个response,但可以在一个req ...
- java之过滤器Filter
Java三大器之过滤器(Filter)的工作原理和代码演示 一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对w ...
- java:(九大内置对象,计算服务器访问次数,filter过滤器,MVC框架,MVC和三层架构的关系)
1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
- java使用Filter过滤器对Response返回值进行修改
转:java使用Filter过滤器对Response返回值进行修改 练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过 ...
随机推荐
- git小白入门全攻略
git是什么(写在前边的叨叨,就是给一点不懂的小白打个比喻,大佬请自行跳过) git在平时的开发中用的太频繁了,以至于我都不知道如何去形容它.囧. 假设我们开发的工作类似于图书整理,写的代码就是很多人 ...
- i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor
0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...
- 谷歌浏览器升级引起的BUG
问题描述:在谷歌浏览器中,电脑打开A系统,添加附件时无法弹框. 预期结果:添加附件,可以打开弹框. 问题分析:谷歌浏览器自动升级,自55.0.2883.75后发布的新版本均自动停用Flash插件. 解 ...
- Linux启动详解
<概述> Linux启动大致分为一下几个步骤,详细的启动步骤在<启动分析>中详解. 1:首先bios加电自检,初始化(这个过程会检测相关硬件(cpu,内存,显卡,硬盘等)) 2 ...
- BZOJ.4793.[CERC2016]Hangar Hurdles(Kruskal重构树 BFS)
题目链接 \(Description\) 有一个\(n\times n\)的正方形网格,上面有若干障碍点.\(q\)次询问,每次询问把一个正方形箱子从\((x1,y1)\)推到\((x2,y2)\) ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
- Python中的MySQLConnector使用介绍
MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序了,很多初学者对于 在python中连接mysql数据库还是有点为难了,下文我 ...
- BZOJ 5381 or & Codeforces 623E Transforming Sequence DP+NTT
两道题题意都是一样的 不过$CF$的模数是$10^9+7$ 很简单的分析发现$A_i$项一定要有一个之前没有出现过的二进制位才能满足条件 考虑$DP$来做 设$f_{i,j}$表示$i$个数用了二进制 ...
- iOS主流机型更新
主流机型更新后,舍弃了原有的iPhone 4 ,iPhone 4s, iPhone 5 ,iPhone 5s.增加了iPhone X,iPhone 8和iPhone 8 plus. 总体上屏幕趋于一个 ...
- 集合(5)—Map之HashMap()
定义 .Map接口提供了一中种映射关系,其中的元素是以键值对(key- value)的形式存储 ,能够实现根据键(key)快速查找值(value) .键(key)和值(value)可以是任意类型的变量 ...