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

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

时间2025-09-21 10:16:52分类IT科技浏览5918
导读: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
seo伪原创方法(SEO智能伪原创,打造高质量网站内容)