美文网首页
封装PageHelper分页的请求参数和响应结果集

封装PageHelper分页的请求参数和响应结果集

作者: 阿杰_96c5 | 来源:发表于2020-10-19 16:35 被阅读0次

    1. 在创建Servlet工具类 ,获取request中的分页请求参数

    package com.foen.common.utils;
    
    import java.io.IOException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.springframework.web.context.request.RequestAttributes;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    import com.foen.common.core.text.Convert;
    
    /**
     * 客户端工具类
     * 
     * @author foen
     */
    public class ServletUtils
    {
        /**
         * 获取String参数
         */
        public static String getParameter(String name)
        {
            return getRequest().getParameter(name);
        }
    
        /**
         * 获取String参数
         */
        public static String getParameter(String name, String defaultValue)
        {
            return Convert.toStr(getRequest().getParameter(name), defaultValue);
        }
    
        /**
         * 获取Integer参数
         */
        public static Integer getParameterToInt(String name)
        {
            return Convert.toInt(getRequest().getParameter(name));
        }
    
        /**
         * 获取Integer参数
         */
        public static Integer getParameterToInt(String name, Integer defaultValue)
        {
            return Convert.toInt(getRequest().getParameter(name), defaultValue);
        }
    
        /**
         * 获取request
         */
        public static HttpServletRequest getRequest()
        {
            return getRequestAttributes().getRequest();
        }
    
        /**
         * 获取response
         */
        public static HttpServletResponse getResponse()
        {
            return getRequestAttributes().getResponse();
        }
    
        /**
         * 获取session
         */
        public static HttpSession getSession()
        {
            return getRequest().getSession();
        }
    
        public static ServletRequestAttributes getRequestAttributes()
        {
            RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
            return (ServletRequestAttributes) attributes;
        }
    
        /**
         * 将字符串渲染到客户端
         * 
         * @param response 渲染对象
         * @param string 待渲染的字符串
         * @return null
         */
        public static String renderString(HttpServletResponse response, String string)
        {
            try
            {
                response.setStatus(200);
                response.setContentType("application/json");
                response.setCharacterEncoding("utf-8");
                response.getWriter().print(string);
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 是否是Ajax异步请求
         * 
         * @param request
         */
        public static boolean isAjaxRequest(HttpServletRequest request)
        {
            String accept = request.getHeader("accept");
            if (accept != null && accept.indexOf("application/json") != -1)
            {
                return true;
            }
    
            String xRequestedWith = request.getHeader("X-Requested-With");
            if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1)
            {
                return true;
            }
    
            String uri = request.getRequestURI();
            if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
            {
                return true;
            }
    
            String ajax = request.getParameter("__ajax");
            if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
            {
                return true;
            }
            return false;
        }
    }
    

    2. 封装分页对象

    public class TableSupport
    {
        /**
         * 当前记录起始索引
         */
        public static final String PAGE_NUM = "pageNum";
    
        /**
         * 每页显示记录数
         */
        public static final String PAGE_SIZE = "pageSize";
    
        /**
         * 排序列
         */
        public static final String ORDER_BY_COLUMN = "orderByColumn";
    
        /**
         * 排序的方向 "desc" 或者 "asc".
         */
        public static final String IS_ASC = "isAsc";
    
        /**
         * 封装分页参数对象
         */
        public static PageDomain getPageDomain()
        {
            PageDomain pageDomain = new PageDomain();
            // 获取请求中的pageNum参数
            pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
            // 获取请求中的pageSize参数
            pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
            // 获取请求中的orderByColumn参数
            pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
            // 获取请求中的isAsc参数
            pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
            return pageDomain;
        }
    
        // 调用封装方法创建分页参数对象
        public static PageDomain buildPageRequest()
        {
            return getPageDomain();
        }
    }
    

    3. 创建公共Controller, 封装分页参数和响应结果

    public class BaseController
    {
        protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
    
        /**
         * 将前台传递过来的日期格式的字符串,自动转化为Date类型
         */
        @InitBinder
        public void initBinder(WebDataBinder binder)
        {
            // Date 类型转换
            binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
            {
                @Override
                public void setAsText(String text)
                {
                    setValue(DateUtils.parseDate(text));
                }
            });
        }
    
        /**
         * 设置请求分页数据
         */
        protected void startPage()
        {
            PageDomain pageDomain = TableSupport.buildPageRequest();
            Integer pageNum = pageDomain.getPageNum();
            Integer pageSize = pageDomain.getPageSize();
            if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
            {
                String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
                PageHelper.startPage(pageNum, pageSize, orderBy);
            }
        }
    
        /**
         * 响应请求分页数据
         */
        @SuppressWarnings({ "rawtypes", "unchecked" })
        protected TableDataInfo getDataTable(List<?> list)
        {
            TableDataInfo rspData = new TableDataInfo();
            rspData.setCode(HttpStatus.SUCCESS);
            rspData.setMsg("查询成功");
            rspData.setRows(list);
            rspData.setTotal(new PageInfo(list).getTotal());
            return rspData;
        }
    
        /**
         * 响应返回结果
         * 
         * @param rows 影响行数
         * @return 操作结果
         */
        protected AjaxResult toAjax(int rows)
        {
            return rows > 0 ? AjaxResult.success() : AjaxResult.error();
        }
    
        /**
         * 页面跳转
         */
        public String redirect(String url)
        {
            return StringUtils.format("redirect:{}", url);
        }
    }
    

    5. 在Controller层中 使用分页参数封装对象

    @GetMapping("/list")
    public TableDataInfo list(SysConfig config)
    {
        startPage();
        List<SysConfig> list = configService.selectConfigList(config);
        return getDataTable(list);
    }
    

    6. 前端请求参数示例

    // 查询参数
    queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: ****,
        ********:*****
    }
    

    相关文章

      网友评论

          本文标题:封装PageHelper分页的请求参数和响应结果集

          本文链接:https://www.haomeiwen.com/subject/xgtlmktx.html