servlet 获得 form 各种类型数据的值

jsp

<input type="checkbox" name="idList" value="1">1;

<input type="checkbox" name="idList" value="2">2;

<input type="checkbox" name="idList" value="3">3;

servlet

String[] idList = request.getParameterValues("idList"); 


但是 idList总是null,后来发现因为在form中有属性:enctype="multipart/form-data"(坑货)

找到问题了那就修改吧

贴一段servlet代码

    List<String> idList = new ArrayList<String>();//1存放idList
    Map<String,Object> map = new HashMap<String,Object>();//2存放其他表单数据
    try {
    //创建磁盘文件项工厂
    DiskFileItemFactory factory = new DiskFileItemFactory();
    //创建文件上传核心对象
    ServletFileUpload upload = new ServletFileUpload(factory);
    //解析request获得文件项对象集合
    List<FileItem> parseRequest = upload.parseRequest(request);
    for(FileItem item : parseRequest){
        //判断是否是普通表单项
        boolean formField = item.isFormField();
        if(formField){
            //普通表单项 获得表单的数据 
            String fieldName = item.getFieldName();
            String fieldValue = item.getString("UTF-8");
            if("idList".equals(fieldName))
            {    
                midList.add(fieldValue);//3存放CheckBox表单项
            }
            else{
                map.put(fieldName, fieldValue);//4存放其他普通表单项
            }              
        }else{
            //文件上传项 获得文件名称 获得文件的内容            
            String fileName = item.getName();
            String path = this.getServletContext().getRealPath("upload");
            if(fileName!=null)
            {
                InputStream in = item.getInputStream();
                OutputStream out = new FileOutputStream(path+"/"+fileName);//I:/xxx/xx/xxx/xxx.jpg                
                IOUtils.copy(in, out);                
                in.close();
                out.close();
                //item.delete();                
                map.put("image", "upload/"+fileName);
            }
            
            
        }
        
    }
    
 
//3解释一下为什么checkbox要单独放在List中
因为当checkbox多选时
fieldname:idList  fieldvalue:1         
fieldname:idList  fieldvalue:2
fieldname:idList  fieldvalue:3
如果直接放入map,key值相同只会保存一个value.


   





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值