这里写的过滤器用的是适配器模式,思路为:
先写一个类实现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过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...
这里的`<filter>`元素定义了过滤器的名称和类路径,而`<filter-mapping>`元素指定了过滤器应作用于哪些URL模式。 ```xml <!-- 过滤是否用户已登录 --> <filter> <filter-name>AdminFilter</filter-name> <filter-...
在Java Web开发中,JSP(JavaServer Pages)常常与Servlet和过滤器(Filter)结合使用,以实现更复杂的业务逻辑和控制流程。过滤器在请求到达目标资源(如JSP页面或Servlet)之前和之后执行,可以用来进行权限验证、...
AngularJS过滤器(filter)是AngularJS框架中用于数据处理和格式化的重要工具,它可以方便地在视图层对数据进行转换、筛选和排序。在实际的开发中,过滤器通常用于解决数据呈现前的格式化问题,例如将数字转换为人类...
一、过滤器写法 在Vue中,过滤器的使用方式是在双大括号`{{ }}`内的数据绑定表达式后面加上管道符`|`,然后紧跟过滤器的名称。例如: ```html {{ message | Filter }} ``` 这里的`Filter`就是过滤器的名字,`...
上述代码展示了如何创建一个名为`kk.filter`的过滤器模块,并向其添加自定义过滤器`rJs`。`rJs`过滤器将输入中的"js"字符串替换为"JavaScript"。在引入外部过滤器时,与内置模块一样,可以通过数组的形式将过滤器...
在Java Web开发中,使用过滤器(Filter)是处理请求和响应的一种方式,...通过上述的详细分析,我们可以了解如何在JSP中实现和选择过滤器的写法。掌握过滤器的使用对于提高Web应用程序的可维护性和灵活性具有重要意义。
1. 使用 @WebFilter 注解:可以在过滤器类上添加 @WebFilter 注解,并指定过滤器的名称、URL 模式和初始化参数。 2. 使用 Servlet 组件扫描:可以使用 @ServletComponentScan 注解来扫描 Servlet 相关的组件,并将...
排版记录,点耽误时间,我就简单的来,下面是一个vue 过滤器的写法,demo 演示,限制一个字符串的长度。 vue filter 的官网介绍 https://cn.vuejs.org/v2/guide/filters.html 下面就具体拿自己的一个例子介绍: ...
创建一个过滤器需要两个步骤:创建 Filter 处理类和在 web.xml 文件中配置 Filter。 在 Java 中,过滤器必须实现 javax.servlet.Filter 接口,该接口定义了三个方法: * void init(FilterConfig config): 用于完成...
例如:{{ date | dateFormat }}这是过滤器的写法;{{ dateFormat(date) }}这是函数调用的写法 可以看出过滤器的写法更加语义化,让人一眼可以看出它的含义。 <!-- 在双花括号中 --> {{ message | capitalize ...
此外,文章中也提到了一些额外的内容,比如关于过滤器面向过程的写法,以及如何处理整数和小数的格式化。这说明在实现过滤器时,需要考虑到不同的数据格式要求,以及过滤器的通用性和灵活性。 总结来说,本文详细地...
Vue提供了两种过滤器的写法,可以使用过滤器函数或者使用对象字面量的形式来定义。 示例代码如下: ```javascript // index.js // 定义数字格式化的过滤器,如将10000转换为10k function numberFormatter(num, ...
本篇知识点将详细分析AngularJS中变量的使用方法和过滤器Filter的用法,以及如何自定义过滤器。 首先,AngularJS中变量的设置和使用可以通过多种方式实现。在HTML标签中,AngularJS使用指令(如ng-init、ng-model)...
注意,`message | date-format('yyyy-MM-dd')`的写法是错误的,因为过滤器的第一个参数已经隐含地被设定为管道符号左边的数据。 ### 使用templatestring语法 在ES6中引入的templatestring语法提供了一种更便捷的...
5. ESModule的写法:在使用模块化开发时,可以通过ESModule的import/export语法来导入或导出过滤器函数,使得代码更加模块化和易于管理。 6. 过滤器链式使用:过滤器支持链式调用,即可以将多个过滤器串联起来,...
在AngularJS中,过滤器(Filters)是一种强大的工具,用于转换和格式化数据,以便在视图中展示。自定义过滤器允许开发者根据特定需求创建自己的数据处理逻辑,以满足项目中的各种复杂需求。以下是对AngularJS自定义...