详解JavaWeb过滤器 Filter问题解决

目录
  • 基本概念
  • 1.过滤器概述
  • 2.使用过滤器解决中文编码异常问题
  • 3.使用过滤器实现用户登录权限拦截

基本概念

1、 Filter 过滤器它是 JavaWeb 的三大组件之一。 三大组件分别是: Servlet 程序、 Listener 监听器、 Filter 过滤器
2、 Filter 过滤器它是 JavaEE 的规范。 也就是接口
3、 Filter 过滤器它的作用是: 拦截请求, 过滤响应
        过滤器的三要素:

①拦截

过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操作。而且对于一个具体的过滤器,它必须明确它要拦截的请求,而不是所有请求都拦截。

②过滤

根据业务功能实际的需求,看看在把请求拦截到之后,需要做什么检查或什么操作,写对应的代码即可。

③放行

过滤器完成自己的任务或者是检测到当前请求符合过滤规则,那么可以将请求放行。所谓放行,就是让请求继续去访问它原本要访问的资源。

1.过滤器概述

过滤器,顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等

要在Javaweb项目中使用过滤器,实现Java - Servlet - Filter接口即可:

以下是一个模板,需要实现三个方法:

import javax.servlet.*;
import java.io.IOException;

public class CharacterEncodingFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

2.使用过滤器解决中文编码异常问题

Javaweb默认网页内输出中文会发生乱码,我们可以通过如下两行来设置请求和响应编码,以解决这个问题:

servletResponse.setContentType("text/html;charset=utf-8");

但是当存在多个Servlet时势必会发生不便(产生大量冗余代码),此时可以通过过滤器解决:

重写doFilter方法:

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    servletResponse.setContentType("text/html;charset=utf-8");
    // 必须要让过滤器继续通行
    filterChain.doFilter(servletRequest, servletResponse);
}

同时,在web.xml文件中也要进行配置:

<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>CharacterEncodingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <!-- 过滤整个网站的请求 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>

如上即可解决乱码问题

(0)

相关推荐

  • 详解JavaWeb中的过滤器Filter

    一.什么是过滤器 1.Filter过滤器的作用:拦截请求 2.拦截请求常见场景: (1)权限检查 (2)日记操作 (3)事务管理 1.1 使用步骤 Filter 过滤器的使用步骤: 1.编写一个类去实现Filter 接口 2.实现过滤方法doFilter() 3.到web.xml 中去配置Filter 的拦截路径 二.初体验 web工程下新建一个admin目录,作为需要权限才能访问的目录,其中有两个文件 2.1 mynav.html <!DOCTYPE html> <html lang=

  • Java中使用Filter过滤器的方法

    Filter过滤器 着重记录下 public void doFilter(){} 方法参数: (1) ServletRequest servletRequest 请求reqeust: (2)ServletResponse servletResponse 响应response: (3)FilterChain filterChain 参数 filterChain,有一个doFilter() 方法,调用这个方法,可以使程序继续往下走,执行后续代码,如果有多个过滤器,它会继续执行下一个过滤器逻辑(开发中

  • Java Filter过滤器的使用教程

    目录 一.过滤器的使用以及实现原理 当前的oa项目还存在什么缺陷 Filter作用与执行原理 过滤器怎么写 过滤器的调用顺序 Filter的生命周期 二.责任链设计模式改造oa项目 一.过滤器的使用以及实现原理 当前的oa项目还存在什么缺陷 ①对于DeptServlet.EmpServlet.OrderServlet,每一个Servlet都是处理自己相关的业务:在这些Servlet执行之前都是需要判断用户是否登录了.如果用户登录了,可以继续操作,如果没有登录,需要用户登录. ②这段判断用户是否登

  • JavaWeb中过滤器Filter的用法详解

    目录 过滤器Filter 处理顺序 使用场景 自定义过滤器 源码分析 FilterDef FilterMap 初始化过滤器 创建过滤器链 ApplicationFilterChain 执行过滤器链 过滤器Filter 过滤器通常对一些web资源进行拦截,做完一些处理器再交给下一个过滤器处理,直到所有的过滤器处理器,再调用servlet实例的service方法进行处理.过滤器可以对request进行处理也可以对response进行处理. 处理顺序 如果过滤器链顺序如上图所示,那么对request请

  • 深入了解Java中的过滤器Filter和监听器Listener

    目录 Filter:过滤器 概念 快速入门 过滤器细节 Listener:监听器 Filter:过滤器 概念 生活中的过滤器:净水器,空气净化器,土匪. web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能. 过滤器的作用: 一般用于完成通用的操作.如:登录验证.统一编码处理.敏感字符过滤... 快速入门 步骤 1.定义一个类,实现接口Filter 2.复写方法 3.配置拦截路径 web.xml 注解 代码 @WebFilter("/*")//访问所有资

  • Java过滤器Filter详解

    目录 Filter学习 Filter功能 Filter的工作原理 多个Filter的实现 Filter的执行逻辑 总结 Filter学习 Filter功能 拦截jsp.静态图片文件.静态html资源文件 实现URL级别的权限访问控制 过滤敏感词汇 压缩相应信息 Filter的工作原理 看源码可以看出来,Filter接口中有3个方法:init.doFilter.destory init方法,初始化Filter,Filter在服务器启动阶段被实例化.并且调用init方法,init方法只执行一次,因为

  • 详解JavaWeb过滤器 Filter问题解决

    目录 基本概念 1.过滤器概述 2.使用过滤器解决中文编码异常问题 3.使用过滤器实现用户登录权限拦截 基本概念 1. Filter 过滤器它是 JavaWeb 的三大组件之一. 三大组件分别是: Servlet 程序. Listener 监听器. Filter 过滤器2. Filter 过滤器它是 JavaEE 的规范. 也就是接口3. Filter 过滤器它的作用是: 拦截请求, 过滤响应        过滤器的三要素: ①拦截 过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求

  • 详解AngularJS中$filter过滤器使用(自定义过滤器)

    1.内置过滤器 * $filter 过滤器,是angularJs中用来处理数据以更好的方式展示给我用户.比如格式化日期,转换大小写等等. * 过滤器即有内置过滤器也支持自定义过滤器.内置过滤器很多,可以百度.关键是如何使用: * 1.在HTML中直接使用内置过滤器 * 2.在js代码中使用内置过滤器 * 3.自定义过滤器 * * (1)常用内置过滤器 * number 数字过滤器,可以设置保留数字小数点后几位等 * date 时间格式化过滤器,可自己设置时间格式 * filter 过滤的数据一般

  • SpringBoot详解shiro过滤器与权限控制

    目录 shiro过滤器 权限控制 动态配置权限 shiro过滤器 首先从客户端发来的所有请求都经过Shiro过滤器,如果用户没有认证的都打回去进行认证,认证成功的,再判断是否具有访问某类资源(公有资源,私有资源)的权限,如果没有权限,访问失败;如果有权限访问成功.注意:客户端传来的token要和realm中的认证信息进行相同规则的比较(加密算法要一致). 常见过滤器: 1.在shiro配置类中配置,使用 filterFactoryBean.setFilterChainDefinitionMa()

  • 一文详解Java过滤器拦截器实例逐步掌握

    目录 一.过滤器与拦截器相同点 二.过滤器与拦截器区别 三.过滤器与拦截器的实现 四.过滤器与拦截器相关面试题 一.过滤器与拦截器相同点 1.拦截器与过滤器都是体现了AOP的思想,对方法实现增强,都可以拦截请求方法. 2.拦截器和过滤器都可以通过Order注解设定执行顺序 二.过滤器与拦截器区别 在Java Web开发中,过滤器(Filter)和拦截器(Interceptor)都是常见的用于在请求和响应之间进行处理的组件.它们的主要区别如下: 运行位置不同:过滤器是运行在Web服务器和Servl

  • 详解javaweb中jstl如何循环List中的Map数据

    详解javaweb中jstl如何循环List中的Map数据 第一种方式: 1:后台代码(测试) List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); Map<String, Object> map = null; for (int i = 0; i < 4; i++) { map = new HashMap<String, Object>();

  • 详解vue beforeEach 死循环问题解决方法

    什么是beforeEach? beforeEach 是一个vue-router的路由导航钩子,一般我用它做路由守卫. 什么是路由守卫? 路由跳转前做一些验证,比如登录验证,是网站中的普遍需求.对此,vue-route 提供的beforeRouteUpdate可以方便地实现导航守卫(navigation-guards).导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧.** 文档地址:https://router.vuejs.org/

  • 详解pandas赋值失败问题解决

    一.pandas对整列赋值 这个比较正常,一般直接赋值就可以: x = pd.DataFrame({'A': ['1', '2', '3', None, None], 'B': ['4', '5', '6', '7', None]}) x['A'] = ['10', '11', '12', '13', '14'] 二.pandas对非整列赋值 1.用单个值赋值 x = pd.DataFrame({'A': ['1', '2', '3', None, None], 'B': ['4', '5',

  • 详解JavaWeb如何实现文件上传和下载功能

    目录 1. 文件传输原理及介绍 2. JavaWeb文件上传 2.1我们用一个新的方式创建项目 2.2 导包 2.3 实用类介绍 2.4 pom.xml导入需要的依赖 2.5 index.jsp 2.6 info.jsp 2.7 FileServlet 2.8 配置Servlet 2.9 测试结果 3. SpringMVC文件上传和下载 3.1 上传 3.2 下载 1. 文件传输原理及介绍 2. JavaWeb文件上传 2.1我们用一个新的方式创建项目 空项目会直接弹出框 把jdk版本设置好 点

  • 详解JavaWeb中的 Listener

    一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色:观察者和被观察者(通常也叫做主题).观察者在主题里面注册自己感兴趣的事件,当这个事件发生时,主题会通过回调接口的方式通知观察者. 举个生活中的例子:订阅报纸.任何一个家庭或个人都可以向报社订阅报纸.这里报社就是"主题",家庭就是"观察者".比如家庭需要订阅明天早晨的报

随机推荐