关注分享主机优惠活动
国内外VPS云服务器

拦截(过滤)生成的 API

总结:四个过滤器、拦截器和方面的工作顺序是首先过滤器工作,然后是拦截器,然后是方面,最后是方法。 五。 如果控制层(即层)中的方法抛出异常,则过滤器拦截器方面是按照抛出异常的顺序的第一个方面。 如果使用自定义异常,请输入异常处理类、拦截器和过滤器。 如果两者均未处理,则继续到最后的

。 目录标题是: 1. 拦截 Resultful API 的三种方式 2. 过滤器示例演示(springboot 项目) 3. 过滤器的特点 4. Filter、Interceptor、Aspect 方面的运行顺序 5. 控制层(即 Controller 层)中的方法Filter、Interceptor、Aspect抛出异常时的顺序

1. 3 如何拦截Resultful API Filter Interceptor Slice(Aspect) 2. Filter Demo示例(springboot项目)

1. 自定义名为 TimeFilter 的过滤器。 这是代码:

封装com.xz.springsecuritydemo.filter;导入org.springframework。 Steretype.Component;import javax.servlet.*;import java.io.IOException;import java.util.Date;@Component//添加该注解即可启用过滤器。 如果不使用@Component注解,则需要创建一个配置类,例如lz创建的WebConf。ig 注册 public class TimeFilterimplements Filter { //在调用控制器方法(即控制器类中的方法)之前调用 @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Time Filter init" ); //在调用控制器方法(控制器类中的方法)后调用@Override。 public void doFilter(ServletRequest request, ServletResponse response, FilterChainchain) throws IOException, ServletException { System.out.println("启动时间过滤器" ); long startTime = new Date().getTime(); ; long endTime = new Date().getTime(); System.out.println("过滤时间较长:"+(endTime -startTime))); ; } //在控制器方法(即控制器类中的方法)被调用后调用@Override。 公共无效销毁(){系统.out("丢弃时间过滤器"); }}

2. 自定义WebFilterConfig配置类。 如果您在步骤1中不使用@Component注解,则必须使用基于Java的配置方法。 这是代码:

包 com.util.ArrayList;@Configurationpublic class WebFilterConfig { @Bean public FilterRegistrationBean timeFilter(){ FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(); filterRegistrationBean.setFilter(new TimeFilter()); ; list.add("/ *");//过滤所有路径 filterRegistrationBean.setUrlPatterns(list); 返回过滤器注册bean。 }}

3. 自定义控件类。 这是代码:

@RestController//表示该控制器提供RestAPI public class SysQueryController { /** * @RequestMapping 将http请求URL映射到java方法 * @RequestParam 将请求参数映射到java方法参数 * / @RequestMapping(value = "/user1", method = RequestMethod .GET) public void query1(@RequestParam String username){ System.out.println("query1====="+username); 4. 测试步骤

在项目开始首先输出自定义过滤器类TimeFilter的init方法信息,如下所示。

然后使用邮递员。 使用测试工具提交请求,如下所示。

最后查看控制状态输出信息如下图。

//输出内容 Time filter startquery1== ====xzFilter take time: 128Time Filter end

5、输出第4步的内容时,可以看到定制过滤器成功。

3. 过滤器属性 从上面的示例中可以看出,过滤器可以检索有关原始 http 请求和响应的信息,但不能检索用于处理请求的实际方法。 4、Filter、Interceptor、Aspect方面工作的顺序是先启用Filter,然后启用Interceptor,然后启用Aspect方面,最后进入Controller方法。 5. 如果控制层(即controller层)的某个方法抛出异常,Filter、Inter接受器、拦截器和方面 方面抛出异常的顺序是方面优先。 使用@ControllerAdvice自定义异常时,接下来进入异常处理类,然后是拦截器,然后是过滤器(如果都没有)。 处理完最后发送给Tomcat

未经允许不得转载:主机频道 » 拦截(过滤)生成的 API

评论 抢沙发

评论前必须登录!