/**
具體的攔截器實現
*/
package com.java456.util;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
class MyInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
String userName = request.getParameter("userName");
System.out.println("攔截到用戶名"+userName);
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle被調用");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("afterCompletion被調用");
}
}
//配置
package com.java456.util;
import org.springframework.context.annotation.Bean;
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;
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
@Bean
public HandlerInterceptor getMyInterceptor(){
return new MyInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// addPathPatterns 用於添加攔截規則, 這裏假設攔截 /url 後面的全部鏈接
// excludePathPatterns 用戶排除攔截
registry.addInterceptor(getMyInterceptor()).addPathPatterns("/test/**");
super.addInterceptors(registry);
}
}
攔截規則參考:https://www.hellojava.com/a/45999.html
增加一個基於正常和異常的判斷:
package com.java456.util; import net.sf.json.JSONObject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; class MyInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { //設置編碼格式 response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=UTF-8"); String userName = request.getParameter("userName"); if(userName.equals("123")){ return true; }else{ PrintWriter pw = response.getWriter(); JSONObject obj = new JSONObject(); obj.put("msg","登錄異常"); pw.write(obj.toString()); return false; } } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("2"); System.out.println("postHandle被調用"); } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("3"); System.out.println("afterCompletion被調用"); } }