Java分页过滤器

2 篇文章 0 订阅
2 篇文章 0 订阅

过滤器实现统一分页

Java分页小工具

uselimit返回结果
为空原响应(List)
truepage{total:t,rows:list}
  1. 过滤器实现(分页代码)

    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    import util.ParamUtil;
    import net.sf.json.JSONObject;
    import org.springframework.web.filter.OncePerRequestFilter;
    
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.nio.charset.StandardCharsets;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    @WebFilter(filterName = "limitFilter",urlPatterns = "/**")
    /**
     * @author:沧海一粟
     * @date: 2019/1/8 17:09
     * @description 分页效果
     */
    public class LimitFilter extends OncePerRequestFilter {
    
    
        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
            Boolean useLimit = "true".equals(request.getParameter("useLimit"));
            Map pager = null;
            if (useLimit){
                int pageSize;
                int pageNo;
                Page<Object> page;
                try {
                    pageSize = Integer.parseInt(request.getParameter("pageSize"));
                    pageNo = Integer.parseInt(request.getParameter("pageNo"));
                }catch (Exception e){
                    pageNo=1;
                    pageSize=10;
                }
                page = PageHelper.startPage(pageNo,pageSize);
                ResponseWrapper wrapperResponse = new ResponseWrapper(response);
    //
                filterChain.doFilter(request ,wrapperResponse);
    //
                //获取返回值
                byte[] content = wrapperResponse.getContent();
                //判断是否有值
                if (content.length > 0) {
                    String str = new String(content, StandardCharsets.UTF_8);
                    JSONArray jsonArray = JSON.parseArray(str);
                    List rows = new ArrayList();
                    for (Object aJson : jsonArray) {
                        String s = String.valueOf(aJson);
                        Object object = JSON.parse(s);
                        rows.add(object);
                    }
                    pager = ParamUtil.createMap(
                            "rows",rows ,
                            "total",page.getTotal()
                    );
                    //把返回值输出到客户端
                    ServletOutputStream out = response.getOutputStream();
                    out.write(JSONObject.fromObject((pager)).toString().getBytes(StandardCharsets.UTF_8));
                    out.flush();
                }
            }else {
                filterChain.doFilter(request ,response);
            }
    
        }
    }
    
    
  2. 所需类

    • ParamUtil :

      package util;
      
      import java.util.ArrayList;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      /**
       * @author:沧海一粟
       * @date: 2019/1/3 14:46
       * @description map -> entity / util
       */
      public class ParamUtil {
      
          public static Map createMap(Object... data) {
              if (data.length % 2 == 0) {
                  Map<Object, Object> tempData = new HashMap<Object, Object>();
                  for (int i = 0; i < data.length / 2; i++) {
                      tempData.put(data[i * 2], data[i * 2 + 1]);
                  }
                  return tempData;
              } else {
                  throw new RuntimeException("Need to be an even number of parameters.");
              }
          }
      
      
          public static List<Integer> createList(Object... data) {
              List list = new ArrayList();
              for (Object o : data) {
                  list.add(o);
              }
              return list;
          }
      
          public static <KeyClazz> void clearMapExcludes(Map<KeyClazz ,Object> map, KeyClazz... params) {
              boolean flag = false;
              for (KeyClazz key : map.keySet()) {
                  excludes:for (KeyClazz param : params) {
                      if (!(key).equals( param)) {
                          flag = true;
                          continue ;
                      }
                      else {
                          flag = false;
                          break excludes;
                      }
                  }
                  if (flag){
                      map.put(key ,null);
                  }
              }
          }
      
          public static Map cloneMap(Map originMap) {
              Map newMap = new HashMap(originMap.keySet().size());
              for (Object key : originMap.keySet()) {
                  newMap.put(key ,originMap.get(key));
              }
              return newMap;
          }
      
          public static void setMap(Map map,Object... data) {
              for (int i = 0; i < data.length / 2; i++) {
                  map.put(data[i * 2], data[i * 2 + 1]);
              }
          }
      }
      
      
    • 其他所需类请参阅 Web操作界面以及返回数据的翻译

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值