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过 ...
随机推荐
- 002.HAProxy安装及常见配置
一 HAProxy安装 官方链接:http://www.haproxy.org/ (国内可能无法打开) 下载连接:http://pkgs.fedoraproject.org/repo/pkgs/hap ...
- 一道有意思的多线程面试题 C# 代码实现
如果你对多线程的控制不怎么了解,那么理解了这篇文章的内容也许对你有帮助.鼓励先自己动手实现一遍,做不出来在看代码. 题目一:两个线程交替打印0~100的奇偶数 这道题就是说有两个线程,一个名为偶数线程 ...
- VUE 打包后关于 -webkit-box-orient: vertical; 消失,导致多行溢出不管用问题
VUE 打包后 -webkit-box-orient: vertical; 样式消失,导致页面样式爆炸,看了看解决方案,在这里总结一下: 实际上是 optimize-css-assets-webpac ...
- ruby那些事儿
为了学习sass,客串一下ruby,这是一个破案的过程,探索的过程. Ruby是日本人发明的一种类似于Python和Perl的服务器端脚本语言,它完全面向对象,适合于快速开发,一般开发效率是java的 ...
- HDU.3571.N-dimensional Sphere(高斯消元 模线性方程组)
题目链接 高斯消元详解 /* $Description$ 在n维空间中给定n+1个点,求一个点使得这个点到所有点的距离都为R(R不给出).点的任一坐标|xi|<=1e17. $Solution$ ...
- 创建PCB原理图的模板
Q:创建PCB原理图的模板,主要就是设置模板的大小,右下角的信息框, 效果图如下: 创建PCB工程 创建原理图 设置模板,方便以后画原理图 打开模板的方式有:1按DO 2双击边框 标题块是附带有的,取 ...
- 构造函数与getter和setter的区别
构造函数是用于初始化类的属性,且只有在创建对象时才会调用构造函数,用于给对象分配地址 无参的构造函数,创建对象时默认调用,当程序没有明确写出有参的构造函数,系统会默认的创建一个. 有参的构造函数,创建 ...
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- MVVM设计模式和在WPF中的实现(四) 事件绑定
系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的 ...
- WindowManager$BadTokenException: Unable to add window permission denied for this window type
10-11 11:47:27.472: E/AndroidRuntime(12804): java.lang.RuntimeException: Unable to start activity Co ...