`

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登入过滤器类写法

    这里的`&lt;filter&gt;`元素定义了过滤器的名称和类路径,而`&lt;filter-mapping&gt;`元素指定了过滤器应作用于哪些URL模式。 ```xml &lt;!-- 过滤是否用户已登录 --&gt; &lt;filter&gt; &lt;filter-name&gt;AdminFilter&lt;/filter-name&gt; &lt;filter-...

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

    在Java Web开发中,JSP(JavaServer Pages)常常与Servlet和过滤器(Filter)结合使用,以实现更复杂的业务逻辑和控制流程。过滤器在请求到达目标资源(如JSP页面或Servlet)之前和之后执行,可以用来进行权限验证、...

    AngularJS过滤器filter用法分析

    AngularJS过滤器(filter)是AngularJS框架中用于数据处理和格式化的重要工具,它可以方便地在视图层对数据进行转换、筛选和排序。在实际的开发中,过滤器通常用于解决数据呈现前的格式化问题,例如将数字转换为人类...

    Vue实现自带的过滤器实例

    一、过滤器写法 在Vue中,过滤器的使用方式是在双大括号`{{ }}`内的数据绑定表达式后面加上管道符`|`,然后紧跟过滤器的名称。例如: ```html {{ message | Filter }} ``` 这里的`Filter`就是过滤器的名字,`...

    Angularjs 依赖压缩及自定义过滤器写法

    上述代码展示了如何创建一个名为`kk.filter`的过滤器模块,并向其添加自定义过滤器`rJs`。`rJs`过滤器将输入中的"js"字符串替换为"JavaScript"。在引入外部过滤器时,与内置模块一样,可以通过数组的形式将过滤器...

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

    在Java Web开发中,使用过滤器(Filter)是处理请求和响应的一种方式,...通过上述的详细分析,我们可以了解如何在JSP中实现和选择过滤器的写法。掌握过滤器的使用对于提高Web应用程序的可维护性和灵活性具有重要意义。

    简单了解SpringBoot过滤器及使用方式

    1. 使用 @WebFilter 注解:可以在过滤器类上添加 @WebFilter 注解,并指定过滤器的名称、URL 模式和初始化参数。 2. 使用 Servlet 组件扫描:可以使用 @ServletComponentScan 注解来扫描 Servlet 相关的组件,并将...

    vue的过滤器filter实例详解

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

    java过滤器、监听器拦截器原理个人总结.pdf

    创建一个过滤器需要两个步骤:创建 Filter 处理类和在 web.xml 文件中配置 Filter。 在 Java 中,过滤器必须实现 javax.servlet.Filter 接口,该接口定义了三个方法: * void init(FilterConfig config): 用于完成...

    vue 过滤器filter实例详解

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

    Vue自定义过滤器格式化数字三位加一逗号实现代码

    此外,文章中也提到了一些额外的内容,比如关于过滤器面向过程的写法,以及如何处理整数和小数的格式化。这说明在实现过滤器时,需要考虑到不同的数据格式要求,以及过滤器的通用性和灵活性。 总结来说,本文详细地...

    Vue封装全局过滤器Filters的步骤

    Vue提供了两种过滤器的写法,可以使用过滤器函数或者使用对象字面量的形式来定义。 示例代码如下: ```javascript // index.js // 定义数字格式化的过滤器,如将10000转换为10k function numberFormatter(num, ...

    AngularJS变量及过滤器Filter用法分析

    本篇知识点将详细分析AngularJS中变量的使用方法和过滤器Filter的用法,以及如何自定义过滤器。 首先,AngularJS中变量的设置和使用可以通过多种方式实现。在HTML标签中,AngularJS使用指令(如ng-init、ng-model)...

    vue通过过滤器实现数据格式化

    注意,`message | date-format('yyyy-MM-dd')`的写法是错误的,因为过滤器的第一个参数已经隐含地被设定为管道符号左边的数据。 ### 使用templatestring语法 在ES6中引入的templatestring语法提供了一种更便捷的...

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

    5. ESModule的写法:在使用模块化开发时,可以通过ESModule的import/export语法来导入或导出过滤器函数,使得代码更加模块化和易于管理。 6. 过滤器链式使用:过滤器支持链式调用,即可以将多个过滤器串联起来,...

    AngularJS自定义过滤器用法经典实例总结

    在AngularJS中,过滤器(Filters)是一种强大的工具,用于转换和格式化数据,以便在视图中展示。自定义过滤器允许开发者根据特定需求创建自己的数据处理逻辑,以满足项目中的各种复杂需求。以下是对AngularJS自定义...

Global site tag (gtag.js) - Google Analytics