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

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

  • 自定义视图解析器

  • 总结

  • 在使用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

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“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面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SpringBoot允许我们自定义拦截器来拦截请求并进行一些逻辑处理。下面是SpringBoot自定义拦截器的步骤: 1.创建一个拦截器类并实现HandlerInterceptor接口,该接口有三个方法:preHandle、postHandle和afterCompletion。其中preHandle方法在请求处理之前被调用,postHandle方法在请求处理之后被调用,afterCompletion方法在视图渲染之后被调用。 2.在拦截器类上使用@Component注解将其注入到Spring容器中。 3.创建一个配置类并实现WebMvcConfigurer接口,该接口有一个addInterceptors方法,可以用来添加自定义拦截器。 4.在addInterceptors方法中添加自定义拦截器,并指定拦截的路径。 下面是一个简单的示例: 1.创建一个拦截器类并实现HandlerInterceptor接口: ```java @Component public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行逻辑处理 // 如果返回false,则请求不会被处理 return true; } } ``` 2.创建一个配置类并实现WebMvcConfigurer接口: ```java @Configuration public class MyWebMvcConfigurer implements WebMvcConfigurer { @Autowired private MyInterceptor myInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // 添加自定义拦截器,并指定拦截路径 registry.addInterceptor(myInterceptor).addPathPatterns("/**"); } } ``` 在上面的示例中,我们创建了一个名为MyInterceptor的拦截器类,并将其注入到Spring容器中。然后,我们创建了一个名为MyWebMvcConfigurer的配置类,并在其中添加了我们的自定义拦截器,并指定了拦截的路径为“/**”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值