package com.walker.web.interceptor;
|
|
import com.walker.db.page.ListPageContext;
|
import com.walker.db.page.PageSearch;
|
import com.walker.infrastructure.utils.StringUtils;
|
import com.walker.web.Constants;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* Web操作拦截器定义。
|
* @author 时克英
|
* @date 2022-11-21
|
*/
|
public class WebOperationInterceptor implements HandlerInterceptor {
|
|
protected final transient Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
// 返回contextPath后面的地址,如: http://localhost/demo/user/list --> /user/list
|
String url = request.getServletPath();
|
// 2023-01-28 如果带'/list'特征的地址认为是分页展示,准备接受分页信息
|
if(url.indexOf(Constants.KEY_INTERCEPTOR_PAGE_LIST) >= 0){
|
logger.debug("拦截器执行:preparePageSearch()");
|
this.preparePageSearch(request);
|
}
|
return this.doPreHandleOther(url, request, response);
|
}
|
|
@Override
|
public void afterCompletion(HttpServletRequest request,
|
HttpServletResponse response, Object args, Exception exception) throws Exception {
|
// 1.清空分页请求线程参数,2022-11-21
|
// 变量写入在控制器中,由业务方法自行调用: preparePageSearch()
|
ListPageContext.clearPageSearch();
|
// logger.debug("ListPageContext.clearPageSearch() = " + ListPageContext.getPageSearch());
|
|
// 2.其他操作需要清空的变量。。。
|
}
|
|
/**
|
* 业务覆盖方法,实现自己拦截业务。
|
* @param servletPath
|
* @param request
|
* @param response
|
* @return
|
* @date 2023-03-09
|
*/
|
protected boolean doPreHandleOther(String servletPath, HttpServletRequest request, HttpServletResponse response){
|
return true;
|
}
|
|
private void preparePageSearch(HttpServletRequest request){
|
PageSearch pageSearch = new PageSearch();
|
String pn = request.getParameter(PageSearch.PAGE_NUM);
|
if(StringUtils.isNotEmpty(pn)){
|
pageSearch.setPageIndex(Integer.valueOf(pn));
|
}
|
String pageSize = request.getParameter(PageSearch.PAGE_SIZE);
|
if(StringUtils.isNotEmpty(pageSize)){
|
pageSearch.setPageSize(Integer.valueOf(pageSize));
|
}
|
// pageSearch.setOrderByColumn(request.getParameter(PageSearch.ORDER_BY_COLUMN));
|
// pageSearch.setOrderAsc(request.getParameter(PageSearch.IS_ASC));
|
|
// 2023-05-18 适配新前端(电商)分页
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
pn = request.getParameter(PageSearch.KEY_PAGE);
|
if(StringUtils.isNotEmpty(pn)){
|
pageSearch.setPageIndex(Integer.valueOf(pn));
|
}
|
pageSize = request.getParameter(PageSearch.KEY_PAGE_LIMIT);
|
if(StringUtils.isNotEmpty(pageSize)){
|
pageSearch.setPageSize(Integer.valueOf(pageSize));
|
}
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ListPageContext.setPageSearch(pageSearch);
|
}
|
}
|