`

Filter过滤器的写法

阅读更多

这里写的过滤器用的是适配器模式,思路为:

先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;

 

步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;

 

web.xml中的配置:

 

<filter>
		<filter-name>validateFilter</filter-name>
		<filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>validateFilter</filter-name>
		<url-pattern>/*(这里是让所有的通过)</url-pattern>
	</filter-mapping>

 

 

Abstractr.java

 

 

public abstract class AbstractFilter implements Filter{

	public void destroy() {}

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

	public void init(FilterConfig filterConfig) throws ServletException {}

}

 

 下面是我自己写的过滤器:我给他取名为  ValidateFilter;

 

ValidateFilter.java

 

 

package com.kaishengit.web.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
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 com.kaishengit.entity.User;
import com.kaishengit.util.Const;

public class ValidateFilter extends AbstractFilter{

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		
		//判断如果是index.jspx 放行
		String uri = request.getRequestURI();
		uri = uri.substring(uri.lastIndexOf("/")+1);
		//System.out.println("当前请求的路径: " + uri);
		
		
		
		if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {
			//所有人都能请求到的URI,放行
			chain.doFilter(request, response);
		} else {    //下面是判断是否有session,也就是用户是否已登录状态;                                                                                                                                        
			HttpSession session = request.getSession();
			User user = (User) session.getAttribute(Const.USER_IN_SESSION);
			if(user == null) {
				System.out.println("URI:" + uri + ">>>>访问被拒绝!");
				response.sendRedirect("index.jspx?code=10002");
			} else {
				chain.doFilter(request, response);
			}
		}	
		
	}

}
 

 

分享到:
评论

相关推荐

    SpringBoot的filter过滤器(源代码)

    SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...

    简单的JSP登入过滤器类写法

    简单的登入过滤方法,实现图片过来,登入页面过滤的一个简单方法

    AngularJS过滤器filter用法分析

    本文实例讲述了AngularJS过滤器filter用法。分享给大家供大家参考,具体如下: 在开发中,经常会遇到这样的场景 如用户的性别分为“男”和“女”,在数据库中保存的值为1和0,用户在查看自己的性别时后端返回的值...

    Servlet过滤器大全

    Servlet过滤器大全,各种过滤器的写法

    PHP的Yii框架中过滤器相关的使用总结

    过滤器有两种写法: 基于方法的过滤器 基于自定义过滤器类的过滤器 无论哪种过滤器,都必须在控制器中重写控制器的public function filters()方法,设置哪个过滤器对哪个动作起作用。 基于方法的过滤器 编写基于...

    vue的过滤器filter实例详解

    排版记录,点耽误时间,我就简单的来,下面是一个vue 过滤器的写法,demo 演示,限制一个字符串的长度。 vue filter 的官网介绍 https://cn.vuejs.org/v2/guide/filters.html 下面就具体拿自己的一个例子介绍: ...

    vue 过滤器filter实例详解

    例如:{{ date | dateFormat }}这是过滤器的写法;{{ dateFormat(date) }}这是函数调用的写法 可以看出过滤器的写法更加语义化,让人一眼可以看出它的含义。 &lt;!-- 在双花括号中 --&gt; {{ message | capitalize ...

    jsp中过滤器选择过滤器的写法详解

    public class LoginCheckFilter implements Filter { private FilterConfig config=null; private String webroot=null; public void destroy() { // TODO Auto-generated method stub } @Override public void ...

    Vue实现自带的过滤器实例

    一 过滤器写法 {{ message | Filter}} 二 Vue自带的过滤器:capitalize 功能:首字母大写 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=UTF-8&gt; &lt;title&gt;Vue自带的过滤器&lt;/title&gt...

    vue过滤器实现日期格式化的案例分析

    说明 今天将要介绍的是vue中的过滤器,并且将实现一个日期格式化的小案例。 大家都知道,我们获取当前日期可以...// Vue.filter(过滤器名称,处理函数) 使用的方式 {{ 过滤器数据| 过滤器名称 }} 具体代码 代码如下

    详解vue过滤器在v2.0版本用法

    1.x写法 &lt;body&gt; ... [removed] new Vue({ el:'#app', ...但是2.0中已经废弃了过滤器,需要我们自定义 {{message|uppercase}} //过滤器 Vue.filter('uppercase', function(value) { if (!value) {

    在Spring MVC或Spring Boot中使用Filter打印请求参数问题

    在Spring体系中,过滤器的定义我们一般采用继承OncePerRequestFilter的方式,当然也可以使用原始的Filter。 错误写法一: 如果不对request和response进行处理,使用伪代码采用如下写法打印请求和响应参数(注:此时...

    Vue.js报错Failed to resolve filter问题的解决方法

    之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错误。 console控制台调试的时候,提示错误消息: Failed to resolve filter: HomePage console错误信息.jpg 我原来的写法: 原来的错误写法....

    如何换个角度使用VUE过滤器详解

    过滤器在Vue中的主要用于文本格式化,如小写转大小,日期格式化等操作。官方对这个功能介绍也很简单,不过确实很简单,就一个函数而已。但最近在做两款APP时,遇到一些特殊的需求。然后就对vue中的filter一些用法...

    AngularJS 过滤与排序详解及实例代码

     首先,如果要是先查询过滤,就要使用到AngularJS中的 过滤器filter 了。  直接在表达式的后面使用管道命令符 | ,按照下面的写法就可以达到一个过滤的效果: {{ persons | filter:query }}  通过使用filter实现...

    jQuery 过滤not()与filter()实例代码

    }) 第二种写法: 代码如下: $(function(){ $(“li”).filter(function(index) { return index%2 == 0; }).css(“color”,”red”); $(“li”).not(function(index) { return index%2 !== 0; }).css(“color”,”red...

    我自己写的自定义Web的上传控件

    ///过滤器,写法是.txt;.abc /// private string filter=""; /// /// 限制文件上传大小,为0是不限制,单位是字节 /// private int size=0;//system.componentmodel.defaulteventattribute /// /// ...

    代码生成器-可自定义模版-guns

    7. 防止XSS攻击,通过XssFilter类对所有的输入的非法字符串进行过滤以及替换。 8. 简单可用的代码生成体系,通过SimpleTemplateEngine可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js,还可以生成...

    jpivot学习总结.doc

    memberReaderClass 设定一个成员读取器,默认情况下 Hierarchy 都是从关系型数据库里读取的,如果你的数据不在 RDBMS 里面的话,你可以通过自定义一个 member reader 来表现一个 Hierarchy 。 3.5. Level 级别 , ...

Global site tag (gtag.js) - Google Analytics