美文网首页
java 一次性获取所有请求参数方法封装

java 一次性获取所有请求参数方法封装

作者: eye33 | 来源:发表于2019-06-23 11:14 被阅读0次
/**
     * 获取所有请求参数键值对:
     * key:String类型;
     * value:共3种:
     * 1.文件是文件本身;
     * 2.String;(String[]长度为1的,就为String类型;>1就是String[]类型)
     * 3.String[];
     * @return
     */
    @SuppressWarnings("unchecked")
    public HashMap getAllParams(){
        if (null == request){
            return null;
        }
        Map<String,String[]> paramNames = request.getParameterMap();//请求参数原始数据
        HashMap params = new HashMap();//返回的参数键值对
        //普通参数
        Iterator<Map.Entry<String,String[]>> it=paramNames.entrySet().iterator();
        Map.Entry<String,String[]> entry =null;
        String key = null;
        String[] value = null;
        Integer intValue = null;
        while(it.hasNext()) {
            entry = it.next();
            key = entry.getKey();
            value = entry.getValue();
            if(Tool.processNull(value).length == 0){
                params.put(key, "");
            } else if (Tool.processNull(value).length == 1) {
                params.put(key, value[0]);
            } else {
                params.put(key, value);
            }
        }
        parseMultipartPost();
        if (null == requestItems || requestItems.isEmpty())
            return params;
        for(int i=0;i<requestItems.size();i++){
            FileItem item = (FileItem) requestItems.get(i);
            if (!item.isFormField()) {//信息为文件
                params.put(item.getFieldName(), item);
            }
        }
        return params;
    }

private void parseMultipartPost(){
        try{
            // 是否为multipart(文件上传)类型
            if (!ServletFileUpload.isMultipartContent(request)){
                return;
            }
            // 文件上传处理工厂
            FileItemFactory factory = new DiskFileItemFactory();
            // 创建文件上传处理器
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setHeaderEncoding("utf-8");
            requestItems = upload.parseRequest(request);
        }catch(Exception e){
            e.printStackTrace();
        }
        return;
    }

相关文章

网友评论

      本文标题:java 一次性获取所有请求参数方法封装

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