MyInterceptor拦截器
package com.yuanyi.newspringboot.config;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class MyInterceptor implements HandlerInterceptor {
//该方法在进入Handler方法执行之前执行此方法
//应用场景:如身份认证,身份授权。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String isLogin = (String) request.getSession().getAttribute("key");
if ("ok".equals(isLogin)) {
return true;
} else {
request.getRequestDispatcher("login").forward(request,response);
return false;
}
}
//该方法在进入Handler方法之后,返回ModelAndView之前执行
//应用场景从modelAndView出发,将公用模型数据(如菜单导航)在这里传到视图,也可以在这里统一制定视图
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
//该方法在handler方法执行完之后执行
//应用场景:统一日志处理,统一异常处理
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
MyWebMvcConfig视图配置
package com.yuanyi.newspringboot.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import javax.annotation.Resource;
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer{
@Resource
private MyInterceptor myInterceptor;
/**
* 注册视图解析器
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login").setViewName("login");
registry.addViewController("/login.html").setViewName("login");
}
/**
* 注册拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration myRegistration=registry.addInterceptor(myInterceptor);
myRegistration.addPathPatterns("/**");
myRegistration.excludePathPatterns("/","/login","login.html","/kaptcha","/verify","/removeVerifyCode","/static/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
网友评论