首页IT科技过滤器生命周期方法(学习笔记——过滤器、过滤器的HelloWord、过滤器生命周期)

过滤器生命周期方法(学习笔记——过滤器、过滤器的HelloWord、过滤器生命周期)

时间2025-06-20 16:59:37分类IT科技浏览4997
导读:2023-01-06...

2023-01-06

一             、过滤器(Filter)

1                    、概念:Filter是一个实现了特殊接口(Filter)的java类             ,实现对请求资源(jsp                    ,servlet,html)的过滤的功能             。过滤器是一个运行在服务器的程序       ,优先于请求资源(Servlet或者jsp       、html)之前执行                    。过滤器是Javaweb技术中最为实用的技术之一       。

2      、功能:拦截请求             ,检查                   ,之后选择放行或者是禁止放行      。

3                    、应用场景:登陆权限检查             、解决网站乱码      、过滤敏感字符等等                    。

二                    、过滤器的HelloWord

(1)首先       ,先创建一个module       ,选择“web Application             ”                   ,写入项目名             ,完成创建             。

(2)准备一个请求

①将“index.jsp                    ”删除       ,在web文件夹下创建index.html                    ,创建一个超链接

②在src文件夹中创建一个Servlet包             ,在该包下创建一个名为“HelloServlet       ”的Servlet,去掉注解      。

③在“web.xml      ”中创建访问路径

  <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.hh.Servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>

④设置“HelloServlet                    ”中的代码

package com.hh.Servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HelloServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("访问到了HelloServlet"); } }

⑤将服务器进行简单修改                    ,将Name可以设置为“filter_listener             ”                    ,使用“Chrome      ”,使用“Redeploy                    ”.

⑥为这次请求创建一个过滤器,创建过滤器的步骤:

a.新建一个类             ,“com.hh.filter.HelloFilter             ”                    ,使这个类实现一个接口“Filter”       ,该接口的包是“javax.servlet                    ”

b.实现一个类

c.实现接口中的所有抽象方法,使用快捷键“ctrl+o                    ”                    。有“init”             、“doFilter             ”、“destroy                    ”

@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //当前过滤器的核心方法 System.out.println("访问到了HelloFilter"); //放行代码 filterChain.doFilter(servletRequest,servletResponse); System.out.println("这是过滤器放行后的代码"); }

d.配置过滤器的过滤路径             ,在“web.xml       ”中设置

<filter> <filter-name>HelloFilter</filter-name> <filter-class>com.hh.filter.HelloFilter</filter-class> </filter> <filter-mapping> <filter-name>HelloFilter</filter-name> <url-pattern>/hello</url-pattern> </filter-mapping>

刷新服务器后                   ,在弹出的超链接页面中点击超链接       ,在后台的运行顺序为:

(3)结论:请求发出       ,如果符合过滤器的过滤要求                   ,执行放行前代码;放行             ,执行目标资源;目标资源执行完毕       ,会执行放行后的代码;

三                    、过滤器生命周期

需要了解:filter对象什么时候创建                    、对象类的方法什么时候执行、对象什么时候销毁

(1)在“HelloFilter             ”中创建一个构造器                    ,使用快捷键“Alt+Insert                    ”             ,点击“Constructor       ”

public HelloFilter() { System.out.println("HelloFilter的构造器被执行了"); }

(2)在“HelloFilter      ”中的“init                    ”             、“destroy             ”中添加输出语句

@Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("HelloFilter在进行初始化"); } @Override public void destroy() { System.out.println("HelloFilter被销毁了"); }

(3)filter对象是在特定情况下被创建,filter对象是在特定情况下被执行             。

即“在web项目被加载的时候                    ,过滤器对象被创建      ”                    ,之后立刻执行初始化方法;n次发送符合过滤器路径的请求时,直接执行n次“doFilter                    ”方法;web项目被卸载的时候(服务器关闭)             ,对象被销毁                    ,销毁之前       ,执行destroy方法。

(4)验证结论:

将服务器关闭后             ,过滤器被销毁

声明:本站所有文章                   ,如无特殊说明或标注       ,均为本站原创发布                    。任何个人或组织       ,在未征得本站同意时                   ,禁止复制                    、盗用       、采集             、发布本站内容到任何网站                    、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益             ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
postmapping注解(postman接口测试要点及错误总结)