springmvc拦截器

来源:互联网 发布:dx修复软件 编辑:程序博客网 时间:2024/06/17 20:03

applicationContext-mvc.xml中相应配置:


<mvc:interceptors>        <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->        <mvc:interceptor>            <mvc:mapping path="/**"/>                        <!-- 需排除拦截的地址 -->              <mvc:exclude-mapping path="/" />            <mvc:exclude-mapping path="/test" />            <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->            <bean class="com.interceptor.ParamProcessingInterceptor"/>        </mvc:interceptor>    </mvc:interceptors>



拦截器:

/** *  */package com.interceptor;import java.util.Arrays;import java.util.Map;import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.sagacity.core.utils.StringUtil;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;/** *@description $<p></p>$ *@author heqf  */public class ParamProcessingInterceptor implements HandlerInterceptor  {/* (non-Javadoc) * @see org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception) */@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {}/* (non-Javadoc) * @see org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.web.servlet.ModelAndView) */@Overridepublic void postHandle(HttpServletRequest request,            HttpServletResponse response, Object handler,            ModelAndView modelAndView) throws Exception {System.out.println(request.getAttribute("pageSize"));System.out.println(request.getAttribute("pageNo"));long startTime = (Long) request.getAttribute("startTime");        long endTime = System.currentTimeMillis();        long executeTime = endTime - startTime;        if(handler instanceof HandlerMethod){            StringBuilder sb = new StringBuilder(1000);            sb.append("CostTime  : ").append(executeTime).append("ms").append("\n");            sb.append("-------------------------------------------------------------------------------");            System.out.println(sb.toString());        }}/* (non-Javadoc) * @see org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object) */@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {long startTime = System.currentTimeMillis();request.setAttribute("startTime", startTime);if (handler instanceof HandlerMethod) {if (StringUtil.isNotNullAndBlank(request.getParameterMap().get("pageModel.pageSize"))) {request.setAttribute("pageSize", request.getParameterMap().get("pageModel.pageSize")[0]);}if (StringUtil.isNotNullAndBlank(request.getParameterMap().get("pageModel.pageNo"))) {request.setAttribute("pageNo", request.getParameterMap().get("pageModel.pageNo")[0]);}    StringBuilder sb = new StringBuilder(1000);HandlerMethod h = (HandlerMethod) handler;sb.append("Controller: ").append(h.getBean().getClass().getName()).append("\n");sb.append("Method    : ").append(h.getMethod().getName()).append("\n");sb.append("Params    : ").append(getParamString(request.getParameterMap())).append("\n");sb.append("URI       : ").append(request.getRequestURI()).append("\n");System.out.println(sb.toString());}return true;}private String getParamString(Map<String, String[]> map) {StringBuilder sb = new StringBuilder();for(Entry<String,String[]> e:map.entrySet()){sb.append(e.getKey()).append("=");String[] value = e.getValue();if(value != null && value.length == 1){sb.append(value[0]).append("\t");}else{sb.append(Arrays.toString(value)).append("\t");}}return sb.toString();}}

set进去的参数在action中需要用String pageSize = (String) request.getAttribute("pageSize");的方式获取


如:

/** * 工单查询 *  * @return * @throws BaseException */@RequestMapping(value = "/search", method = RequestMethod.GET)public String search(Model model,@ModelAttribute("eventSheetVO") EventSheetVO eventSheetVO,HttpServletRequest request) throws BaseException {String pageSize = (String) request.getAttribute("pageSize");if (StringUtil.isNotNullAndBlank(pageSize)) {pageModel.setPageSize(Integer.parseInt(pageSize));}String pageNo = (String) request.getAttribute("pageNo");if (StringUtil.isNotNullAndBlank(pageNo)) {pageModel.setPageNo(Integer.parseInt(pageNo));}if(eventSheetVO.getStaffId()!=null||eventSheetVO.getEventId()!=null||eventSheetVO.getCallNo()!=null||eventSheetVO.getBizClass()!=null||eventSheetVO.getBeginCreateTime()!=null||eventSheetVO.getStatus()!=null||eventSheetVO.getCompensateResult()!=null||eventSheetVO.getServiceChannel()!=null||eventSheetVO.getEventProduct()!=null){if(eventSheetVO.getEventId()!=null){eventSheetVO.setEndCreateTime(null);eventSheetVO.setBeginCreateTime(null);}pageModel = eventSheetService.findEvents(pageModel, eventSheetVO);}model.addAttribute("pageModel", pageModel);return "/event/event_sheet_search";}