一、定义拦截器
1.1、创建Java类继承自WebMvcConfigurerAdapter,并通过@Configruation注解进行标注
1.2、重写父类addInterceptors方法,创建HandlerInterceptor对象
这里案例是类似一个登录系统,账号是admin,密码是123
package demo.interceptor;
import demo.controller.TestController;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Configuration
public class MyInterceptor extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
/**
* 拦截请求的方法
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("name");
String passwd = request.getParameter("passwd");
if (name.equals("admin")&&passwd.equals("123")){
return true;
}else{
return false;
}
//true=放行;false=拦截(直接大白页)
}
};
registry.addInterceptor(handlerInterceptor).addPathPatterns("/**");
}
}
1.3、在addInterceptors方法中,将HandlerInterceptor对象放到InterceptorRegistry对象中,并通过addPathPatterns方法定义拦截规则
registry.addInterceptor(handlerInterceptor).addPathPatterns("/**"); //拦截一切请求
二、全部源代码
package demo.interceptor;
import demo.controller.TestController;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Configuration
public class MyInterceptor extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
/**
* 拦截请求的方法
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("name");
String passwd = request.getParameter("passwd");
if (name.equals("admin")&&passwd.equals("123")){
return true;
}else{
return false;
}
//true=放行;false=拦截(直接大白页)
}
};
registry.addInterceptor(handlerInterceptor).addPathPatterns("/**");
}
}