11、Filter(过滤器 重点)
文章目录
- 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的时候,显示 ??? 乱码 过滤器未启动
过滤器 总结
- 过滤器中的所有代码,在过滤特点请求的时候都会执行
- 必须要让过滤器 继续同行 :把这个请求往下转交 转交的代码
- filterChain.doFilter(servletRequest,servletResponse); // 固定的死代码
11、Filter(过滤器 重点)相关推荐
- javaweb(11) Listener监听器与Filter过滤器
javaweb(11) Listener监听器与Filter过滤器 Listener监听器 什么是Listener监听器 Listener 监听器它是 JavaWeb 的三大组件之一.JavaWeb ...
- SpringBoot中AOP实现落地——Filter(过滤器)、Intercepter(拦截器)、Aspect(Spring AOP)
文章目录 一.一切要从Servlet说起 1.1什么是Servlet 1.2为什么需要Servlet 1.3Servlet如何响应用户请求 1.4Servlet与Tomcat处理请求的流程 1.5Se ...
- 前后端整合+Request(请求转发)+respon(重定向)+get+post+Filter过滤器
一.请求Request 是指 从前端浏览器 到 后端的Servlet程序 的访问过程,叫请求的过程 可以使用Servlet提供的Request对象,来解析请求中的请求参数 1.常用方法 getPara ...
- java p41——Filter过滤器
javaweb/day07|day08 Filter过滤器 使用步骤 要点 FilterChain 多个过滤器顺序 FilterConfig获得初始化参数 功能-作用 案例--自动登录实现 案例--装 ...
- Filter 过滤器实用详解
servlet和JSP过滤器Filter 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请 ...
- JavaWeb三大组件之一——Filter过滤器源码解析(全面手撕Filter源码,需要耐心看完)
什么是Filter? 本文所说的Filter是JavaWeb中常见常使用的过滤器.Filter的作用是拦截前端发送给后端的请求,一般是用于权限过滤.日志记录.图片转换.加密.数据压缩等操作. 大致流程 ...
- Filter(过滤器)入门
文章目录 第1章 什么是Filter 1.1 Filter简介 1.2 总结 1.3 主要API 1.3.1 Filter接口 1.3.2 FilterConfig接口 1.3.3 FilterCha ...
- Filter: 过滤器、装饰者设计模式解决乱码、自动登录
一.Filter: 过滤器: 步骤: 1.自定义类, 实现Filter接口 2.重点实现doFilter方法 3.注册Filter @WebFilter web.xml-配置] 4.doFilter中 ...
- Filter过滤器工作原理
Filter过滤器工作原理 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Js ...
最新文章
- C++Miller Rabin算法的实现(附完整源码)
- Office365----Project Online SKUs Change
- php接收键盘事件,js获取键盘事件的方法实例
- 扩展您的JPA POJO
- 探索JavaScript的关闭功能
- java实现回溯算法,java基础面试笔试题
- 使用springboot遇到的的异常
- 小升初数学计算机考试题,【2020年小升初数学常考题型及易错题分析】- 环球网校...
- 集训8.21树状数组讲解
- Unity TextMesh Pro 常用汉字及字母符号
- Python知识点之Python进阶
- 海康网络摄像头实时预览OCX控件
- P3376 【模板】网络最大流【EK算法+Dinic算法解】
- linux c 读取.bin文件
- 关于适配,我想说。。。
- Sentinel SuperPro加密锁编程开发指南
- linux pcs 所有命令,BaiduPCS-Go Windows或linux下百度网盘cmd命令行详细使用方法
- Tkinter-疫苗信息管理系统
- 04_dubbo_ioc
- c语言中进程的基本概念