美文网首页
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