Abstract: Many times we will modify bugs of other colleagues, or even bugs of colleagues who have already left. Sometimes we click on the page and cannot go to which controller is corresponding to the background. In response to this problem, we can actually use the sprngmvc interceptor to block user requests to know which class the page requests. Of course, these printed log information may not be suitable for placement in the production environment, or this interceptor is also unnecessary. . . .
1. Usage of HandlerInterceptor
Step 1: Register the Interceptor
<!-- Register Interceptors--><mvc:interceptors><bean /></mvc:interceptors>
Step 2: Inherit HandlerInterceptor and implement the interceptor
package com.iflashbuy.limanman;import java.util.Iterator;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class ControlInterceptor implements HandlerInterceptor{private Logger logger = LoggerFactory.getLogger(getClass());/** * Called after executing the controller, that is, when leaving */@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object arg2, Exception arg3)throws Exception {}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)throws Exception {// TODO Auto-generated method stub}@Overridepublic Boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception {int i = 1;try {@SuppressWarnings("unchecked")Map<String, Object> parmMap = request.getParameterMap();Iterator<String> iter = parmMap.keySet().iterator();while (iter.hasNext()) {Object key = iter.next();Object value = parmMap.get(key);logger.info("th" + i + "param---->{}-{}", key, value);i = i + 1;}}catch (Exception e) {i = 1;}i = 1;return true;}}2. The effect of background printing information
3. Expand the use of interceptors to achieve basic http authentication
/** * Called after executing the controller, that is, when leaving */@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object arg2, Exception arg3)throws Exception {logger.info("className--->" + arg2);logger.info("request--->" + request);}@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object arg2, ModelAndView arg3)throws Exception {}@Overridepublic Boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object arg2) throws Exception {String sessionAuth = (String) request.getSession().getAttribute("auth");if (sessionAuth != null) {System.out.println("this is next step");nextStep(request, response);} else {if (!checkHeaderAuth(request, response)) {response.setStatus(401);response.setHeader("Cache-Control", "no-store");response.setDateHeader("Expires", 0);response.setHeader("WWW-authenticate", "Basic Realm=/"Please enter the administrator account password/"");return false;}}return true;}private Boolean checkHeaderAuth(HttpServletRequest request,HttpServletResponse response) throws IOException {String auth = request.getHeader("Authorization");System.out.println("auth encoded in base64 is " + getFromBASE64(auth));if ((auth != null) && (auth.length() > 6)) {auth = auth.substring(6, auth.length());String decodedAuth = getFromBASE64(auth);System.out.println("auth decoded from base64 is " + decodedAuth);request.getSession().setAttribute("auth", decodedAuth);return true;} else {return false;}}private String getFromBASE64(String s) {if (s == null)return null;try {byte[] encodeBase64 = Base64.encodeBase64(s.getBytes("UTF-8"));return new String(encodeBase64);}catch (UnsupportedEncodingException e) {return null;}}public void nextStep(HttpServletRequest request,HttpServletResponse response) throws IOException {System.out.println("you can go to the controller");}Summarize
The above is the entire content of this article about the code example of the usage code of springMVC interceptor HandlerInterceptor, I hope it will be helpful to everyone. Interested friends can continue to refer to this site:
Spring Interceptor HandlerInterceptor Interceptor Interface Code Analysis
Login interceptor code sharing implemented by Spring MVC
If there are any shortcomings, please leave a message to point it out. Thank you friends for your support for this site!