iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java Restful API的拦截详解
  • 575
分享到

Java Restful API的拦截详解

2024-04-02 19:04:59 575人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Restful api的拦截三种方式二、过滤器(Filter)的演示示例(SpringBoot项目)三、Filter过滤器特点四、Filter过滤器、Interceptor拦

一、Restful API的拦截三种方式

  • 过滤器(Filter)
  • 拦截器(Interceptor)
  • 切片(Aspect)

二、过滤器(Filter)的演示示例(springboot项目)

1、自定义一个名称为TimeFilter的过滤器,代码如下:


package com.xz.springsecuritydemo.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
import java.util.Date;
@Component//添加该注解使过滤器启作用,如果不使用@Component注解需要写配置类,例lz写的WEBConfig进行注册
public class TimeFilter implements Filter {
    //在控制器方法(即controller类中的方法)调用之前调用
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Time Filter init");
    }
    //在控制器方法(即controller类中的方法)调用之后调用
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("Time Filter start");
        long startTime = new Date().getTime();
        chain.doFilter(request,response);
        long endTime = new Date().getTime();
        System.out.println("Filter耗时:"+(endTime-startTime));
        System.out.println("Time Filter end");
    }
    //在控制器方法(即controller类中的方法)调用之后调用
    @Override
    public void destroy() {
        System.out.println("Time Filter destroy");
    }
}

2、自定义一个WebFilterConfig配置类,步骤1中如果不使用@Component注解,需要使用基于java的配置方式实现,代码如下:


package com.xz.springsecuritydemo.filter;
import org.springframework.boot.web.servlet.FilterReGIStrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
@Configuration
public class WebFilterConfig {
    @Bean
    public FilterRegistrationBean timeFilter(){
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new TimeFilter());
        ArrayList<String> list = new ArrayList<>();
        list.add("
    @RequestMapping(value = "/user1",method = RequestMethod.GET)
    public void query1(@RequestParam String username){
        System.out.println("query1====="+username);
    }
 }

4、测试步骤

  • 启动项目时会先输出自定义过滤器类TimeFilter的init方式的信息,如下图:

在这里插入图片描述

  • 再用postman测试工具发送请求,如下图:

在这里插入图片描述

  • 最后查看控制态输出信息,如下图:

//输出内容
Time Filter start
query1=====xz
Filter耗时:128
Time Filter end

在这里插入图片描述

5、输出第4步的内容表示自定义的Filter过滤器成功。

三、Filter过滤器特点

由上面的示例可知:Filter过滤器可以获取到原始的http请求和响应的信息,但是获取不到真正处理请求的方法信息。

四、Filter过滤器、Interceptor拦截器 、Aspect切面起作用的顺序

  • 先是Filter过滤器起作用
  • 然后Interceptor拦截器起作用
  • 然后Aspect切面起作用
  • 最后进入Controller方法中

五、当控制层(即Controller层)的方法抛异常时,Filter过滤器、Interceptor拦截器 、Aspect切面 抛异常的顺序

  • 先是Aspect切面
  • 如果使用@ControllerAdvice自定义异常,再进入这个处理异常类
  • 然后Interceptor拦截器
  • 然后Filter过滤器
  • 如果都没处理,最后到Tomcat

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java Restful API的拦截详解

本文链接: https://www.lsjlt.com/news/134837.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java Restful API的拦截详解
    目录一、Restful API的拦截三种方式二、过滤器(Filter)的演示示例(springboot项目)三、Filter过滤器特点四、Filter过滤器、Interceptor拦...
    99+
    2024-04-02
  • Java SpringBoot拦截器详解
    目录1. 拦截器2. 拦截器使用2.1 准备工作2.2 Controller2.3 Interceptor2.4 Config2.5 测试2.5.1 正常登录2.5.2 非正常登录2...
    99+
    2024-04-02
  • Java Spring拦截器案例详解
    springmvc提供了拦截器,类似于过滤器,他将在我们的请求具体出来之前先做检查,有权决定接下来是否继续,对我们的请求进行加工。 拦截器,可以设计多个。 通过实现handlerun...
    99+
    2024-04-02
  • struts2 拦截器的详解
    Struts2拦截器是一种可以在请求到达Action之前或之后执行的组件。它们可以用来实现一些通用的任务,例如身份验证、日志记录、性...
    99+
    2023-09-23
    struts2
  • Struts2拦截器详解
    Struts2拦截器是一种重要的组件,用于对请求进行预处理和后处理。它们可以在请求到达Action之前或之后执行一些操作,比如验证用...
    99+
    2023-09-20
    Struts2
  • SpringMVC拦截器详解
    目录web.xml文件springMVC配置文件:controller类:第一个拦截器配置:第二个拦截器:总结web.xml文件 <?xml version="1....
    99+
    2024-04-02
  • Java 超详细讲解SpringMVC拦截器
    目录拦截器(interceptor)的作用拦截器和过滤器区别拦截器快速入门多拦截器操作拦截器方法说明本章小结拦截器(interceptor)的作用 Spring MVC 的 拦截器 ...
    99+
    2024-04-02
  • Java超详细讲解WebMvcConfigurer拦截器
    目录addInterceptors拦截器addViewControllers页面跳转addResourceHandlers静态资源configureViewResolvers视图解析...
    99+
    2024-04-02
  • 详解SpringMVC的拦截器参数及拦截器链配置
    目录一、拦截器参数二、拦截器链配置一、拦截器参数 前置处理 public boolean preHandle(HttpServletRequest request, HttpServ...
    99+
    2024-04-02
  • 详解SpringMVC的拦截器链实现及拦截器链配置
    目录1、拦截器链实现2、拦截器链的执行顺序1、拦截器链实现 只需定义多个拦截器的 bean,然后在拦截器的配置类中将其逐一添加即可 第一个拦截器的定义: @Component pub...
    99+
    2024-04-02
  • Java 实现拦截器Interceptor的拦截功能方式
    目录第1步:创建业务组件接口 BusinessFacade第2步:创建业务组件实现类 BusinessClass第3步:创建拦截器 InterceptorClass第4步:创建动态代...
    99+
    2024-04-02
  • 详解Spring 拦截器流程及多个拦截器的执行顺序
    目录拦截器的定义测试拦截器多个拦截器的执行顺序让 preHandle 进行拦截总结       拦截器是 Spring MVC 中的组件,它可...
    99+
    2024-04-02
  • java异常处理拦截器详情
    使用异常处理拦截器,可以不用写那么多try…catch…。 我有个功能,就是前端提交短信内容到后端,后端进行一系列的处理,其中是要将短信内容提交到公共短信接口。微服务框架,公共短信接...
    99+
    2024-04-02
  • 详解Java拦截器以及自定义注解的使用
    目录1,设置预处理,设置不需要拦截的请求2.UserTokenInterceptor ,securityInterceptor分别处理不同的请求拦截,执行不同的拦截逻辑。3.关于注解...
    99+
    2024-04-02
  • 一文详解Java拦截器与过滤器的使用
    目录流程图拦截器vs过滤器SpringMVC技术架构图项目Demo依赖Interceptor拦截器Filter过滤器1、多Filter不指定过滤顺序2、多Filter指定过滤顺序流程...
    99+
    2024-04-02
  • SpringMVC拦截器超详细解读
    目录1.什么是拦截器2.拦截器和过滤器有哪些区别3.拦截器方法4.多个拦截器的执行流程1.什么是拦截器 ​ SpringMVC提供了Intercepter拦截器机制,类似于Servl...
    99+
    2024-04-02
  • Vue3中axios请求封装、请求拦截与相应拦截详解
    目录前言axios请求封装请求拦截和响应拦截接口的请求总结前言 对于三者放在Service.js中封装,方便使用 axios.create 的作用是创建一个新的 ...
    99+
    2023-05-19
    vue axios封装 axios请求封装 axios请求拦截
  • 详解struts2拦截器的使用方法
    这篇文章给大家介绍详解struts2拦截器的使用方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何使用struts2拦截器,或者自定义拦截器。特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用str...
    99+
    2023-05-31
    struts2 st
  • 详解如何消除axios拦截中的if
    目录基本拦截设计轮子思考方向轮子骨架详细实现实践总结基本拦截 axios的响应错误拦截中,难免会对error.status做各种各样的if判断,又或者switch。为了防止枯燥乏味的...
    99+
    2024-04-02
  • java SpringMvc中拦截器的应用
    目录什么是拦截器基本使用实例总结什么是拦截器 拦截器(Interceptor)是SpringMVC中的组件。可以使很多个请求被处理时,都会执行拦截器中的代码。拦截器可以选择阻止执行或...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作