RequestUtils

说明

需要依赖 jackson、hutool 库

  • 可以将 request.getParameter() 中的数据取出,封装到 javabean中
  • 可以将前端发送的 json 格式数据,读取出来,封装到 javabean 中、map中

代码

package com.zrgj.epidemic.util;

import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class RequestUtils {

    public static void parseParam(HttpServletRequest req, Object obj){
        Map<String,String[]> map = req.getParameterMap();
        Map paraMap = new HashMap();
        parseParam(map,paraMap);
        BeanUtil.fillBeanWithMap(paraMap,obj , false);
    }
    // 会有bug,只处理一个值,类似爱好这种,暂不处理
    private static void parseParam(Map<String,String[]> srcMap , Map<String,String> destMap){

        // 遍历 map 中的所有 key value
        Set<Map.Entry<String, String[]>> entries = srcMap.entrySet();

        for(Map.Entry<String, String[]> entry : entries){
            String key = entry.getKey();
            String[] valueArr = entry.getValue();
            String value = null;
            // 只处理一个值,类似爱好这种,暂不处理
            if(valueArr!=null && valueArr.length == 1){
                value = valueArr[0];
            }

            destMap.put(key,value);

        }
    }

    public static <T> T parseJson(HttpServletRequest req, Class<T> clazz) throws Exception{

        String jsonStr = getJsonString(req);

        // 将json格式的字符串,转换成java对象
        // 注意:json字符串中的属性名,要与类中的属性名一致,才能将值传入
        ObjectMapper mapper = new ObjectMapper();
        T res = mapper.readValue(jsonStr, clazz);
        return res;
    }

    public static Map<String,String> parseJson(HttpServletRequest req) throws Exception{

        String jsonStr = getJsonString(req);

        ObjectMapper mapper = new ObjectMapper();
        Map res = mapper.readValue(jsonStr, Map.class);
        return res;
    }

    public static String getJsonString(HttpServletRequest req) throws Exception{

        StringBuilder sb = new StringBuilder();
        BufferedReader reader = req.getReader();
        char[]buff = new char[1024];
        int len;
        while((len = reader.read(buff)) != -1) {
            sb.append(buff,0, len);
        }
        String jsonStr = sb.toString();
        return jsonStr;
    }
}