文章目录

  • 11、==Filter==(过滤器 重点)
    • Filter开发步骤:
      • 1.导包
      • 2.编写过滤器
        • 1.导包不要错
        • 2.实现Filter接口
        • 3.在web.xml中配置 servlet 和 filter
        • 4.展示Servlet
        • 结论:
    • 过滤器 总结

11、Filter(过滤器 重点)

springMVC、springBoot、安全框架(Shiro,做安全认证的)里边的一些东西都是用过滤器实现的

Filter:过滤器,用来过滤网站的数据

  • 处理中文乱码
  • 登录验证……

Filter开发步骤:

1.导包

在pom.xml下

<dependencies><!--Servlet 依赖--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><!--JSP 依赖--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version></dependency><!--JSTL表达式的依赖--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!-- standard 标签库--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><!-- 连接数据库还需要导入两个包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.24</version></dependency>
</dependencies>

2.编写过滤器

1.导包不要错

2.实现Filter接口

重写对应的方法即可

方法

  • init(FilterConfig filterConfig) ,初始化 :

    • web服务器启动,就已经初始化了,随时等待过滤器对象出现!
    • 他和服务器一同启动的
  • doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain),
    • FilterChain Chain :链
  • destroy()
    • 销毁 web服务器关闭的时候,过滤器会销毁
package com.kuang.filter;import javax.servlet.*;
import java.io.IOException;/*** 字符集编码过滤器* @author <1455272942@qq.com>* @since 2021/6/21 18:33** 过滤器 总结* 1.过滤器中的所有代码,在过滤特点请求的时候都会执行* 2.必须要让过滤器 继续同行 :把这个请求往下转交  转交的代码*   filterChain.doFilter(servletRequest,servletResponse);  固定的死代码**/
public class CharacterEncodingFilter implements Filter {@Override
//    初始化 :web服务器启动,就已经初始化了,随时等待过滤器对象出现!  他和服务器一同启动的public void init(FilterConfig filterConfig) throws ServletException {}@Override
//    FilterChain  Chain :链public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 过来的请求等于utf-8编码servletRequest.setCharacterEncoding("utf-8");// 过去的请求等于utf-8编码servletResponse.setCharacterEncoding("utf-8");// 上下文servletResponse.setContentType("text/html;charset=UTF-8");System.out.println("CharacterEncodingFilter执行前");
//        让我们的请求继续走,如果不写,程序到这里就拦截停止了    如:两个过滤器filterChain.doFilter(servletRequest,servletResponse);System.out.println("CharacterEncodingFilter执行前后");}@Override
//    销毁  web服务器关闭的时候,过滤器会销毁public void destroy() {System.out.println("CharacterEncodingFilter销毁");}
}
3.在web.xml中配置 servlet 和 filter
<servlet><servlet-name>ShowServlet</servlet-name><servlet-class>com.kuang.servlet.ShowServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>ShowServlet</servlet-name><url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
<servlet-mapping><servlet-name>ShowServlet</servlet-name><url-pattern>/show</url-pattern>
</servlet-mapping><!--配filter-->
<filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!--只要是 / servlet下的任何请求,都会经过这个过滤器--><url-pattern>/servlet/*</url-pattern>
</filter-mapping>
4.展示Servlet
package com.kuang.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 展示Servlet* @author <1455272942@qq.com>* @since 2021/6/21 18:35*/
public class ShowServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//以前的处理方式
//        resp.setCharacterEncoding("utf-8");// 乱码resp.getWriter().write("你好,世界");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
结论:

当路径是 localhost:8080/servlet/show的时候 显示 你好,世界 过滤器启动了

当路径是localhost:8080/show的时候,显示 ??? 乱码 过滤器未启动

过滤器 总结

    1. 过滤器中的所有代码,在过滤特点请求的时候都会执行
    1. 必须要让过滤器 继续同行 :把这个请求往下转交 转交的代码
  • filterChain.doFilter(servletRequest,servletResponse); // 固定的死代码

11、Filter(过滤器 重点)相关推荐

  1. javaweb(11) Listener监听器与Filter过滤器

    javaweb(11) Listener监听器与Filter过滤器 Listener监听器 什么是Listener监听器 Listener 监听器它是 JavaWeb 的三大组件之一.JavaWeb ...

  2. SpringBoot中AOP实现落地——Filter(过滤器)、Intercepter(拦截器)、Aspect(Spring AOP)

    文章目录 一.一切要从Servlet说起 1.1什么是Servlet 1.2为什么需要Servlet 1.3Servlet如何响应用户请求 1.4Servlet与Tomcat处理请求的流程 1.5Se ...

  3. 前后端整合+Request(请求转发)+respon(重定向)+get+post+Filter过滤器

    一.请求Request 是指 从前端浏览器 到 后端的Servlet程序 的访问过程,叫请求的过程 可以使用Servlet提供的Request对象,来解析请求中的请求参数 1.常用方法 getPara ...

  4. java p41——Filter过滤器

    javaweb/day07|day08 Filter过滤器 使用步骤 要点 FilterChain 多个过滤器顺序 FilterConfig获得初始化参数 功能-作用 案例--自动登录实现 案例--装 ...

  5. Filter 过滤器实用详解

    servlet和JSP过滤器Filter 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请 ...

  6. JavaWeb三大组件之一——Filter过滤器源码解析(全面手撕Filter源码,需要耐心看完)

    什么是Filter? 本文所说的Filter是JavaWeb中常见常使用的过滤器.Filter的作用是拦截前端发送给后端的请求,一般是用于权限过滤.日志记录.图片转换.加密.数据压缩等操作. 大致流程 ...

  7. Filter(过滤器)入门

    文章目录 第1章 什么是Filter 1.1 Filter简介 1.2 总结 1.3 主要API 1.3.1 Filter接口 1.3.2 FilterConfig接口 1.3.3 FilterCha ...

  8. Filter: 过滤器、装饰者设计模式解决乱码、自动登录

    一.Filter: 过滤器: 步骤: 1.自定义类, 实现Filter接口 2.重点实现doFilter方法 3.注册Filter @WebFilter web.xml-配置] 4.doFilter中 ...

  9. Filter过滤器工作原理

    Filter过滤器工作原理 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Js ...

最新文章

  1. C++Miller Rabin算法的实现(附完整源码)
  2. Office365----Project Online SKUs Change
  3. php接收键盘事件,js获取键盘事件的方法实例
  4. 扩展您的JPA POJO
  5. 探索JavaScript的关闭功能
  6. java实现回溯算法,java基础面试笔试题
  7. 使用springboot遇到的的异常
  8. 小升初数学计算机考试题,【2020年小升初数学常考题型及易错题分析】- 环球网校...
  9. 集训8.21树状数组讲解
  10. Unity TextMesh Pro 常用汉字及字母符号
  11. Python知识点之Python进阶
  12. 海康网络摄像头实时预览OCX控件
  13. P3376 【模板】网络最大流【EK算法+Dinic算法解】
  14. linux c 读取.bin文件
  15. 关于适配,我想说。。。
  16. Sentinel SuperPro加密锁编程开发指南
  17. linux pcs 所有命令,BaiduPCS-Go Windows或linux下百度网盘cmd命令行详细使用方法
  18. Tkinter-疫苗信息管理系统
  19. 04_dubbo_ioc
  20. c语言中进程的基本概念

热门文章

  1. 520小玩意之Python词云:导出与女票的微信聊天记录并分析
  2. android 还原手机默认桌面
  3. vb sendmessage 详解1
  4. vue-router 路由 图解
  5. 灵魂2问12答:DBA的核心价值和最重要的能力是什么?
  6. windows server 2008 r2 datacenter 共享服务找不到网络路径解决办法
  7. shell 脚本中获取执行系统命令的输出结果
  8. Edge浏览器使用技巧 —— Edge浏览器源码模式如何打开
  9. 留在SSL的6天快乐(?)集训心态爆炸记
  10. 方正证券分析报告(0607)