首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

Spring Boot拦截器

写作时间:2026-07-08

Spring Boot拦截器

回值类型 方法声明 描述
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 该方法在控制器处理请求方法前执行,其返回值表示是否中断后续操作,返回 true 表示继续向下执行,返回 false 表示中断后续操作。
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 该方法在控制器处理请求方法调用之后、解析视图之前执行,可以通过此方法对请求域中的模型和视图做进一步修改。
void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 该方法在视图渲染结束后执行,可以通过此方法实现资源清理、记录日志信息等工作。

LoginHandlerInterceptor

/**
 * 拦截器
 */
public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获取Session
        Object loginUser = request.getSession().getAttribute("LoginUser");
        if (loginUser == null) {
            request.setAttribute("msg","未登录,请先登录");
            //request.getRequestDispatcher("/login.html").forward(request, response);//如果报死循环就使用下面这句
            response.sendRedirect("/login");
            return false;
        }else {
            return true;
        }
    }
}

MyMvcConfig

 /**
 * 定制Spring Boot
 */
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    //设置在浏览器输入的url地址,addViewController("/") 浏览器输入的地址, setViewName:跳转的页面  
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
        registry.addViewController("/main.html").setViewName("index");
    }
    //拦截器配置
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")//拦截所有请求,包括静态资源文件
                .excludePathPatterns("/login.html","/","/user/login","/assets/**","/Css/**","/front/**","/Images/**","/Js/**");//放行登录页,登陆操作,静态资源
    }
}

或者

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        String[] pathPatterns = {"/**"};    //拦截路径规则
        String[] excludePathPatterns = {"/login", "/regist", "/statics/**"};  //排除路径规则
        registry.addInterceptor(new LoginHandlerInterceptor())
                .addPathPatterns(pathPatterns)
                .excludePathPatterns(excludePathPatterns);

    }
}

LoginController

@Controller
public class LoginController {
    @RequestMapping("/user/login")
    public String Login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Model model,
                        HttpSession session){
        if(!"".equals(username)&&"123456".equals(password)){
            session.setAttribute("LoginUser",username);
            return "redirect:/main.html";
        }else {
            model.addAttribute("msg","用户名或密码错误");
            return "login";
        }
    }
}
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08