Java Web的三大组件之一Filter过滤器实现原理实例讲解

技术Java Web的三大组件之一Filter过滤器实现原理实例讲解 Java Web的三大组件之一Filter过滤器实现原理实例讲解
FilterServlet, Filter, Listener称为

Java三大组件之一Filter filter的实现原理示例说明

Filter

Servlet、过滤器、监听器被称为Java Web的三个组件。

Filter: 过滤器

当浏览器访问服务器资源并返回响应时,过滤器可以拦截请求并完成一些特殊功能。

用法:一般用于完成登录验证、统一编码处理、敏感字符过滤等一般操作。

1. Filter实现

定义一个类来实现过滤器接口。

覆盖方法

配置拦截路径

在网络INF中配置xml

使用注释来配置路径:@WebFilter(urlPatterns=)或@WebFilter(value=)或@WebFilter()

2. Filter原理

Filter执行流程

请求过滤:在发布的doFilter上执行代码

Release:执行doFilter,执行截取的资源。

响应:被拦截的资源做出响应后,它们会回来执行doFilter下的代码。

Filter生命周期

Init():初始化

服务器启动后,创建Filter对象并执行init方法。

只执行一次。通常用于加载资源。

DoFilter():请求过滤和响应过滤。

销毁(:)销毁

当服务器正常关闭时调用,通常用于释放资源。

过滤器拦截路径

块资源:/index.jsp,/loginServlet

只有在访问特定资源时,才会执行过滤器。

2.阻止目录:/用户/*

只有在访问/user下的资源时,才会执行该筛选器。

3.后缀截取:*.jsp (没有/)

4.      封锁所有资源:/*

过滤器的拦截方式:如何获取资源

备注:配置dispatcherType属性。

-REQUEST:默认值,资源只有在被浏览器直接访问时才会被阻止。

-在转发对此资源的访问时,FORWARD:被阻止。

-INCLUDE:仅当包含访问资源时才会被阻止。

-ASYNC:资源只有在异步访问时才会被拦截。

@ WebFilter(dispatcherType={ dispatcherType。请求,调度类型。FORWARD });

2.xml配置

拦截链

执行顺序:请求过滤按从小到大的顺序执行,响应顺序正好相反。

所有过滤器.(@WebFilter(/*))

你好过滤器.(@WebFilter(/hello.jsp))

你好,JSP(hello.jsp)

你好过滤回来.

所有过滤器

2.过滤器的顺序

*注意配置:-按字符串比较规则,从小到大。

例如,/*在/login.jsp之前执行。

-如果有重复,将从小到大执行。

例如,/*和/login.jsp都在请求login.js时执行过滤。

* web.xml配置:服务器上的任何人都将首先执行。

登录案例

-获取案例的资源。请确认它已登录。

-如果登录,将直接释放。

-如果您尚未登录,请跳转到登录页面,表示您尚未登录。请先登录。

@WebFilter(/*)

公共类LoginFilter实现了筛选器{ 0

@覆盖

public void init(FilterConfig config)引发了ServletException {

}

@覆盖

public void doFilter(servlet request请求,ServletResponse响应,FilterChain链)引发ServletException,IOException {

HttpServletrequest request 1=(HttpServletrequest)请求;

string uri=request 1 . GetRequesturi();

//注意:要过滤资源,否则不会显示样式、字体等登录的资源。

if(uri . contains(/log in . JSP)| | uri . contains(/loginServlet)| | uri . contains(/CSS/)| | uri . contains(/fonts/)| | uri . contains(/js/)| | uri . contains(//checkCodeServlet))

{

chain.doFilter(请求、响应);

} else {

字符串用户名=(字符串)request1.getSession()。getAttribute(用户名);

if(null!=用户名!等于(用户名))

{

chain.doFilter(请求、响应);

}else {

Request.setAttribute(loginMsg,您没有登录,请登录!);

request . getrequest dispatcher(/hello user/log in . JSP)。转发(请求、响应);

}

}

}

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/141435.html

(0)

相关推荐

  • 渺渺茫茫,出自西游记的茫茫渺渺是什么意思

    技术渺渺茫茫,出自西游记的茫茫渺渺是什么意思指辽阔无际的样子渺渺茫茫,亦指模糊、不清楚。原文:西游记第一回《灵根育孕源流出 心性修持大道生》混沌未分天地乱,茫茫渺渺无人见。自从盘古破鸿蒙,开辟从兹清浊辨。覆载群生仰至仁,

    生活 2021年10月24日
  • 怎么在生产环境运行Elasticsearch

    技术怎么在生产环境运行Elasticsearch这篇文章主要讲解了“怎么在生产环境运行Elasticsearch”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在生产环

    攻略 2021年11月4日
  • web编程技巧有哪些

    技术web编程技巧有哪些本篇内容主要讲解“web编程技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web编程技巧有哪些”吧!您应该使用像map、filter和red

    攻略 2021年11月11日
  • socket编程中常用协议有哪些

    技术socket编程中常用协议有哪些这篇文章给大家分享的是有关socket编程中常用协议有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.ip IP协议是将多个包交换网络连接起来,它在源

    攻略 2021年11月17日
  • 对孩子的期望和鼓励的话,父母对孩子的期望寄语初中生

    技术对孩子的期望和鼓励的话,父母对孩子的期望寄语初中生1家长对初中孩子的期望 1.愿你是一棵树:春天对孩子的期望和鼓励的话,吐一山淡淡的香味;夏天,洒一抹如泉的凉荫;秋天,举一树甜甜的青果;冬天,做一个养精蓄锐的好梦!

    生活 2021年10月21日
  • sketchformac矢量绘图设计软件(sketchformac矢量绘图软件)

    技术Sketch for mac矢量绘图设计软件怎么用这篇文章将为大家详细讲解有关Sketch for mac矢量绘图设计软件怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定

    攻略 2021年12月24日