当前位置: 首页 > news >正文

昆明哪些做网站建设的公司广告投放公司

昆明哪些做网站建设的公司,广告投放公司,大型企业名录查询,苏州推广排名目录 Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置(资源被访问方式) 6.FilterChain拦截链 Filter过滤器 filter是过滤器,相比于Servlet的发送请求,filter是用于拦截请求。…

目录

Filter过滤器

1. Filter的生命周期

2.Filter的配置

3.拦截路径

4.拦截具体的使用

 5.拦截方式配置(资源被访问方式)

6.FilterChain拦截链


Filter过滤器

      filter是过滤器,相比于Servlet的发送请求,filter是用于拦截请求。比如在登陆系统中,正常登陆的用户可以访问服务器的相关资源,而如果登陆信息错误,则拦截想要访问资源的请求。以下将具体介绍filter

1. Filter的生命周期

Filter的生命周期分为三部分,分别是init()初始化;doFilter()执行拦截;destroy()销毁;

具体如下代码

package com.company.Filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
//注解配置实现所有请求访问都进行拦截
@WebFilter("/*")
public class filterDemo1 implements Filter {
//    初始化@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("加载的时候自动执行,并且只执行一次");}
//    执行拦截@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("实现拦截的时候执行函数,可以多次执行");}
//    销毁@Overridepublic void destroy() {System.out.println("在服务器关闭的时候,执行销毁函数");}
}

2.Filter的配置

Filter的配置分为两种,一种是xml配置,一种是通过注解类配置

  • 通过xml配置(打开web.xml):
    <filter>
<!--        随便创建想要的名称--><filter-name>filterDemo1</filter-name>
<!--        filter对应的具体类--><filter-class>com.company.Filter.filterDemo1</filter-class></filter>
<!--    创建filter对应的映射--><filter-mapping>
<!--        filter对应的名称--><filter-name>filterDemo1</filter-name>
<!--        拦截路径,/*表示所有访问都会进行拦截--><url-pattern>/*</url-pattern></filter-mapping>
  • 通过注解类进行配置:

@WebFilter(value=url-pattern)

如果只需要写拦截规路径可以省略掉value = ;

直接输入@WebFilter("/*")实现对数据所有访问时候进行拦截


3.拦截路径

刚才介绍了/*是所有请求的拦截,但是对于具体访问的请求的拦截还无法做到,下面介绍其他拦截路径

  1. 具体路径访问的拦截:/index.jsp (当访问index.jsp文件时候实现拦截)
  2. 某一个目录的访问的拦截:/user (当访问user目录以下的所有文件时候进行拦截)
  3. 后缀名访问的拦截:*.jsp (实现对所有文件以.jsp后缀结尾访问的拦截)
  4. 拦截所有相关路径:/*     (访问所有服务器的资源时候都实现拦截)

4.拦截具体的使用

1.创建类实现Filter接口(注意Filter接口是包javax.servlet中的)

2.覆写生命周期函数

3.通过doFilter函数实现拦截。当通过后实现放行

案例代码:

拦截类

package com.company.Filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;//通过注解类实现拦截路径
@WebFilter("/*")
//实现接口
public class filterDemo2 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("过滤器已被加载");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("发现请求,实施拦截");进行验证,如果通过则实现放行
//        System.out.println("验证成功,放行");
//        filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {System.out.println("服务器关闭时候执行销毁函数");}
}

模拟资源类

package com.company;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/FilterDemo3")
public class FilterDemo3 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("访问到资源啦");}
//    方法统一@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}
}

当通过url访问资源类时候 可以看到请求被拦截了,无法执行资源类中输出"访问资源类啦"

再加上验证功能后如果允许通过则需要放行,执行FilterChain filterChain中filterChain对象的doFilter(servletRequest对象, servletResponse对象)即代码中的

//        拦截结束后如果通过则实现放行System.out.println("验证成功,放行");filterChain.doFilter(servletRequest, servletResponse);

 此时再通过url访问后,查看控制台的信息可以看到:


 5.拦截方式配置(资源被访问方式)

当然除了路径访问可以拦截以外,还可以设置拦截的方式,有些请求可以直接输入url直接访问类。有些通过一些网页实现跳转的方式获取类的资源。还有就是通过请求转发的形式获取类。所以基于如此可以对这些方法做一些限制。

拦截方法描述
REQUEST(请求拦截)拦截直接通过 URL 访问的请求。
FOWARD(转发拦截)拦截通过请求转发方式获取资源的请求。
INCLUDE(包含拦截)拦截通过网页跳转方式获取资源的请求。
ERROR(错误拦截)拦截发生错误或异常情况的请求。
ASYNC(异步拦截)拦截异步请求,即延迟加载的请求,可以防止对响应进行预先缓存和使用。

默认情况下是通过REQUEST实现拦截

具体使用还需要看开始时候使用的配置

  • 通过xml配置
   <filter><filter-name>filterDemo1</filter-name><filter-class>com.company.Filter.filterDemo1</filter-class></filter><filter-mapping><filter-name>filterDemo1</filter-name><url-pattern>/*</url-pattern>
<!--        配置请求拦截方法--><dispatcher>REQUEST</dispatcher></filter-mapping>
  • 通过注解类配置


6.FilterChain拦截链

拦截链,顾名思义就是由多个过滤器组成,就像是一条路设置了多个收费站一样。只有满足所有的拦截规则后才能通过。

设置多个拦截器(其中一个的代码)

package com.company.Filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter("/*")
public class filterDemo3 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("拦截器1进行拦截");System.out.println("拦截器1放行");
//        拦截器放行filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}

通过url访问时候结果如下

 拦截器的顺序

一.注解配置

是通过拦截器名字的排序比如01、02、03,先比较第一个数字大小,如果相同就比较第二个数字大小以此类推

二.xml配置

只需要配置xml时候由上往下即可


 

http://www.qdjiajiao.com/news/7175.html

相关文章:

  • 查询网站备案显示划横线百度关键词搜索量
  • 制作一个网站数据库怎么做的seo优化个人博客
  • 装置艺术那个网站做的好创建网址链接
  • 企业网站建设有没有模板八宿县网站seo优化排名
  • 制作小程序代码武汉seo招聘网
  • 交易平台网站模板深圳市seo网络推广哪家好
  • 免费模板网站制作怎么注册网站 个人
  • 中小微企业名录库查询seo对网店推广的作用
  • 建设部网站官工程质量手册广州优化防控措施
  • 知名网站服务器小红书如何引流推广
  • 兴县做网站的公司网络营销策划内容
  • 电子商务网站建设模板新闻稿在线
  • 网站辅助导航新冠疫苗接种最新消息
  • 网站开发软硬件廊坊快速优化排名
  • web前端开发培训机构哪家好seo设置是什么
  • 微信oa系统seo查询官方网站
  • 石材网站建设软件开发培训
  • 外贸网站建设电脑培训班一般要学多久
  • 怎么用visual studio做网站电话营销销售系统
  • 做相册的网站有哪些谷歌google play官网下载
  • 浅谈网站的主色调设计网络推广公司哪家好
  • logo一键生成器免费版下载乐天seo培训中心
  • 徐州网站开发哪个好薇外包公司是正规公司吗
  • 网站设计内容包括我想做电商怎么加入
  • wordpress+侧栏主题网站推广seo招聘
  • 跟我一起做网站品牌策划公司介绍
  • 网站报价单河南省疫情最新情况
  • 石家庄知名网站网络营销运营
  • 南京网站销售seo推广代运营
  • 上海网站建设哪家网址域名ip查询