SpringBoot~使用javaConfig的形式扩展WebMvcConfigurer配置, 实现自定义拦截器、默认转发、自定义视图解析器

前端 0
    • 实现自定义拦截器
  • 默认转发

  • 自定义视图解析器

  • 总结

  • 在使用SpringBoot项目的时候, 虽然默认配置极大的简化了我们的开发效率, 但是有些功能比如拦截器是避免不了需要我们自己实现的

实现自定义拦截器


  • 首先需要创建一个类去实现HandlerInterceptor, 然后重写其perHandle方法

public class MyInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

//获取session, 只要有session就放行

HttpSession session = request.getSession(false);

if (session == null) {

//没有设置session不放行

request.setAttribute(“msg”, “请登录”);

request.getRequestDispatcher(“/index.html”).forward(request, response);

return false;

}

User user = (User) session.getAttribute(“user”);

if (user == null) {

//说明没有登陆不放行

request.setAttribute(“msg”, “请登录”);

request.getRequestDispatcher(“/index.html”).forward(request, response);

return false;

} else {

//放行

return true;

}

}

}

  • 我们需要一个使用javaConfig形式的配置类去实现WebMvcConfig接口, 去告诉SpringBoot这是一个WebMvc的配置配

@Configuration

public class MyMvcConfiguration implements WebMvcConfigurer {

//实现拦截器

@Override

public void addInterceptors(InterceptorRegistry registry) {

System.out.println(“[DEBUG_INTERCEPTOR]===>”);

//添加自定义拦截器, 匹配/表示所有请求, 但是除了后面那些"/login", “/index.html”, “/”, "/css/", “/js/", "/img/

registry.addInterceptor(new MyInterceptor())

.addPathPatterns(“/**”)

.excludePathPatterns(“/login”, “/index.html”, “/”, “/css/", "/js/”, “/img/**”);

}

}

  • 编写controller和登录页面进行测试

@Controller

public class LoginController {

@RequestMapping(“/login”)

public String login(HttpSession session, @RequestParam(“username”)String name,

@RequestParam(“password”)String pwd,

Model model) {

if (name.equals(pwd)) {

//说明账号密码正确

User user = new User(name, pwd);

session.setAttribute(“user”, user);

model.addAttribute(“msg”, name);

return “home”;

} else {

//说明账号密码不正确

model.addAttribute(“msg”, “账号或密码不正确”);

return “index”;

}

}

//如果不进行登录, 这个路径的请求应该被拦截器拦截下来

@RequestMapping(“home”)

public String home() {

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

  • RabbitMQ实战指南

  • 手写RocketMQ笔记

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

UOiS7S-1714461417043)]

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

也许您对下面的内容还感兴趣: