1.全局配置
这个类要和接口在同一个目录下
package com.example.tunnel;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/book/**") //对哪种格式的路径进行跨域处理
.allowedHeaders("*") //允许的请求头
.allowedMethods("*") //允许的请求方法
.maxAge(1800) //探测请求的有效期
.allowedOrigins("http://127.0.0.1:5500"); //支持的域
}
}
2.注解方式
@CrossOrigin(value = "
http://127.0.0.1:8080", //允许的源
maxAge = 3600 , //探测请求的有效期
allowedHeaders = "*") //允许的请求头
3.拦截器
创建拦截器实现HandlerInterceptor接口
拦截器中的方法按preHandle->Controller->postHandle->afterCompletion的顺序执行
preHandle方法返回true时后面的方法才会执行
package org.sang;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler){
System.out.println("MyInterceptor1>>>preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView){
System.out.println("MyInterceptor1>>>postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex){
System.out.println("MyInterceptor1>>>afterCompletion");
}
}
配置拦截器
package org.sang;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor1())
.addPathPatterns("/**") //表示拦截路径
.excludePathPatterns("/hello"); //表示排除的路径
}
}