-
- 实现自定义拦截器
-
默认转发
-
自定义视图解析器
-
总结
-
在使用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笔记”
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
UOiS7S-1714461417043)]
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录