源于蚂蚁课堂的学习,点击这里查看
1.定义配置类取代XML配置
@Configuration
@EnableWebMvc
@EnableAsync
@ComponentScan({"live.yanxiaohui.mvc.controller", "live.yanxiaohui.mvc.service"})
public class MvcConfig implements WebMvcConfigurer {
/**
* 视图解析器
* @return
*/
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Bean
public TokenIntercepter tokenIntercepter() {
return new TokenIntercepter();
}
/**
* 添加拦截器并设置其拦截的路径
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(tokenIntercepter()).addPathPatterns("/**");
}
}
2.自定义拦截器
public class TokenIntercepter implements HandlerInterceptor {
/**
* 拦截的业务,false拦截
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getParameter("token");
System.out.println("==========token:[" + token + "]");
if(StringUtils.isEmpty(token)){
response.setStatus(500);
response.getWriter().write("token is null");
return false;
}
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 {
System.out.println("视图返回之前,业务方法执行之后的处理............");
}
/**
* 视图返回后,返回响应之前的处理
*
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("视图返回后,返回响应之前的处理..............");
}
}
3.创建springMVC的入口
public class MvcInit implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext context) throws ServletException {
// 1.创建mvc容器
AnnotationConfigWebApplicationContext app = new AnnotationConfigWebApplicationContext();
// 2.mvc容器注册配置
app.register(MvcConfig.class);
// 3.设置dispather入口
ServletRegistration.Dynamic dispatcher = context.addServlet("dispatcher", new DispatcherServlet(app));
// 4.设置访问路径的映射
dispatcher.addMapping("/");
// 5.设置加载的优先级为最高
dispatcher.setLoadOnStartup(1);
}
}
这样,当请求参数没有token时,就会被拦截,响应回页面