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)
*/
@Override
public 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)
*/
@Override
public 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)
*/
@Override
public 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";
}