springboot简单拦截器和页面注册

1.编写页面放入项目生成的templates文件中


2.编写登陆页面后台controller代码


@Controller
@SessionAttributes("loginUser")//方便拦截器中使用
public class EmployeeController {

@PostMapping(value = {"/login"})
    public  String  login(Map<String,Object> map, @RequestParam("username") String username, @RequestParam("password") String password){
    System.out.println("进入登陆页面");
  String url=null;
  if ("admin".equals(username)&&"admin".equals(password)){
             map.put("loginUser",username);
             url="dashboard";
  }else {
  url="login";
  }
       return  url;
  }
}

3.编写拦截器interceptor


public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 访问前拦截
     * @param request
     * @param response
     * @param handler
     * @return true 放行 false 拦截
     * @throws Exception
     * */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        Object loginUser = session.getAttribute("loginUser");
        if (loginUser==null){
            //采取转发
            request.getRequestDispatcher("/login").forward(request,response);
            return false;
        }else {
            return  true;//放行
        }



    }

    /**
     * 环绕拦截
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    /**
     * 访问后拦截
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

4.编写config代码,注册拦截器和页面跳转

@Configuration
//@EnableAutoConfiguration //表示springBoot不再托管springMvc
public class MyConfig  extends WebMvcConfigurerAdapter {
    //注册添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       registry.addInterceptor(new LoginInterceptor()).excludePathPatterns("/login","/","/index.html");
    }
    //注册页面跳转
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // super.addViewControllers(registry);
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/index.html").setViewName("login");
        registry.addViewController("/dashboard.html").setViewName("dashboard");
    }

}

猜你喜欢

转载自blog.csdn.net/my_springlove/article/details/80105034
今日推荐