本文共 3575 字,大约阅读时间需要 11 分钟。
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; } }}
@Configurationpublic 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/**"); }}
@Controllerpublic 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() { return "home"; }}
//实现路径转发, 只要访问index.html这个路径就过度到templates路径下的index.html @Override public void addViewControllers(ViewControllerRegistry registry) { System.out.println("[DEBUG_VIEW]===>"); registry.addViewController("/index.html").setViewName("index"); }
//实现额外组件生成, 生成一个额外的视图解析器, 并以bean的形式返回到spring中 @Bean public ViewResolver myViewResolver() { return new MyViewResolver(); } static class MyViewResolver implements ViewResolver { @Override public View resolveViewName(String s, Locale locale) throws Exception { return null; } }
转载地址:http://knsci.baihongyu.com/