拦截器
新建config目录,新建WebConfig,代码如下
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
public class WebConfig implements WebMvcConfigurer {
@Resource
private MyInterceptor myInterceptor;//具体拦截器名称
/**
* 添加拦截器
*/
@Override
public void addInterceptors (InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor)
.addPathPatterns("/**");//表示所有的接口都不需要经过拦截器
}
}
新建MyInterceptor ,代码如下
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
/*
* 视图渲染之后的操作
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
/*
* 处理请求完成后视图渲染之前的处理操作
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
/*
* 进入controller层之前拦截请求
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
System.out.println("getContextPath:" + request.getContextPath());
System.out.println("getServletPath:" + request.getServletPath());
System.out.println("getRequestURI:" + request.getRequestURI());
System.out.println("getRequestURL:" + request.getRequestURL());
System.out.println("getRealPath:" + request.getSession().getServletContext().getRealPath("image"));
return true;
}
}
我们想做任何的拦截设置可在afterCompletion()方法内进行处理即可
跨域
在config目录下创建PassHttpFilter,编写如下代码
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
@WebFilter(urlPatterns = "/*", filterName = "authFilter") //这里的“/*” 表示的是需要拦截的请求路径
public class PassHttpFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
/**
* 跨域处理
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse)servletResponse;
httpResponse.setHeader("Access-Control-Allow-Headers","*");
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
httpResponse.addHeader("Access-Control-Allow-Origin", "*");
filterChain.doFilter(servletRequest, httpResponse);
}
@Override
public void destroy() {
}
}
使用该跨域处理,使用普通AJAX请求可处理跨域,但是VUE使用axios依然会存在错误,后续找出问题再进行解决