作者:乐天派jiao2502901101 | 来源:互联网 | 2024-12-04 13:22
首先,我们需要构建一个基本的 Web 应用程序框架。这一步骤可以通过 IntelliJ IDEA 或者其他开发工具快速完成,确保你的项目已经集成了 Spring Boot 和相关依赖。
接着,定义一个简单的用户实体类,用于表示系统中的用户信息。以下是用户类的代码示例:
package com.example.model;
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
随后,我们创建一个拦截器类,该类需继承自 HandlerInterceptor
接口,并重写其方法以实现特定的拦截逻辑。例如,我们可以检查用户的登录状态,如果用户未登录,则重定向至错误页面。
package com.example.interceptor;
import com.example.model.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
response.sendRedirect(request.getContextPath() + "/user/error");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
为了使拦截器生效,还需要配置一个拦截器管理类,该类通过实现 WebMvcConfigurer
接口并重写 addInterceptors
方法来指定哪些请求需要被拦截以及哪些请求应该被排除在外。
package com.example.config;
import com.example.interceptor.AuthenticationInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
String[] patterns = {"/user/**"};
String[] exclusiOns= {"/user/out", "/user/error", "/user/login"};
registry.addInterceptor(new AuthenticationInterceptor())
.addPathPatterns(patterns)
.excludePathPatterns(exclusions);
}
}
最后,我们编写控制器类来处理前端请求,其中包括登录验证、用户中心展示等功能。下面是一个简单的控制器实现:
package com.example.controller;
import com.example.model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public String login(HttpServletRequest request) {
User user = new User();
user.setId(1001);
user.setName("翠花");
request.getSession().setAttribute("user", user);
return "登录成功";
}
@RequestMapping("/center")
public String center(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute("user");
return "欢迎编号为: " + user.getId() + " 的用户:" + user.getName();
}
@RequestMapping("/out")
public String out() {
return "普通用户访问页面";
}
@RequestMapping("/error")
public String error() {
return "请登录后再访问,谢谢!";
}
}
至此,整个 Spring Boot 拦截器的配置与使用过程已经完成。你可以启动应用程序,测试不同情况下的请求处理结果。