软件编程
位置:首页>> 软件编程>> java编程>> spring boot的 * 简单使用示例代码

spring boot的 * 简单使用示例代码

作者:牛头人  发布时间:2021-09-29 04:07:07 

标签:spring,boot, ,

1.spring boot * 默认有:

HandlerInterceptorAdapter
AbstractHandlerMapping
UserRoleAuthorizationInterceptor
LocaleChangeInterceptor
ThemeChangeInterceptor 

其中 LocaleChangeInterceptor 和 ThemeChangeInterceptor 比较常用。

2.实现自定义 * 只需要3步:

1)、创建我们自己的 * 类并实现 HandlerInterceptor 接口。

2)、创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。

3)、实例化我们自定义的 * ,然后将对像手动添加到 * 链中(在addInterceptors方法中添加)。

3.代码示例

IndexInterceptor.java类代码:


package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor implements HandlerInterceptor{
 @Override
 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
     throws Exception {
   System.out.println(">>>IndexInterceptor>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
 }
 @Override
 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
     throws Exception {
   System.out.println(">>>IndexInterceptor>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");
 }
 @Override
 public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    System.out.println(">>>IndexInterceptor>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");
    // 只有返回true才会继续向下执行,返回false取消当前请求
    return true;
 }
}

IndexInterceptor2.java类代码:


package com.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class IndexInterceptor2 implements HandlerInterceptor{
 @Override
 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
     throws Exception {
   System.out.println(">>>IndexInterceptor2>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
 }
 @Override
 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
     throws Exception {
   System.out.println(">>>IndexInterceptor2>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");
 }
 @Override
 public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    System.out.println(">>>IndexInterceptor2>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");
    // 只有返回true才会继续向下执行,返回false取消当前请求
    return false;
 }
}

SimpleWebAppConfigurer.java类代码:


package com.example.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.interceptor.IndexInterceptor;
import com.example.interceptor.IndexInterceptor2;
//只要能被springboot扫描到即可
@Configuration
public class SimpleWebAppConfigurer extends WebMvcConfigurerAdapter{
 @Override
 public void addInterceptors(InterceptorRegistry registry) {
   // 多个 * 组成一个 * 链
   // addPathPatterns 用于添加拦截规则
   // excludePathPatterns 用户排除拦截
   registry.addInterceptor(new IndexInterceptor()).addPathPatterns("/**");
   registry.addInterceptor(new IndexInterceptor2()).addPathPatterns("/**");
   super.addInterceptors(registry);
 }
}

4. * 解析说明

preHandle**:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现);

返回值:true表示继续流程(如调用下一个 * 或处理器);

false表示流程中断(如登录检查失败),不会继续调用其他的 * 或处理器,此时我们需要通过response来产生响应;

postHandle**:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。

afterCompletion**:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的 * 的afterCompletion**。

以上所述是小编给大家介绍的spring boot的 * 简单使用浅析网站的支持!

来源:http://www.cnblogs.com/web424/p/6755968.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com