springmvc上传文件

springmvc上传文件


1> 配置相应的jar包


2> 需要在springmvc(springmvc-back.xml)中配置:SpringMVC上传文件时,需要配置MultipartResolver处理器

	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8" />
        <!-- 指定所上传文件的大小不能超过200M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
        <property name="maxUploadSize" value="200000"></property>
	</bean>

3>jsp:导入用户信息页面:(bootstrap模态框)


<input type="button" value="导入用户信息"  class="btn btn-primary" data-toggle="modal" data-target="#myModal"/> 


<form action="user/imuser.do" method="post" enctype="multipart/form-data">
导入EXCELdiv  开始
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="myModalLabel">用户信息——EXCEL导入</h4>
      </div>
      <div class="modal-body">
      	<input type="file" name="upfile"/>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
        <button type="submit" class="btn btn-primary">导入数据
</button>
      </div>
    </div>
  </div>
</div>
导入EXCELdiv  结束
</form> 


4>将 解析excel的逻辑放到service中,因为当进行批量导入是发生错误可  以回滚;IUserInfoService:


	/**
	 * 导入Excel中的数据到数据库
	 * @param in
	 */
	public void uploadExcel(InputStream in)throws Exception;


5> excel每一行为一个用户,excel表中的列顺序要与对象属性保持一致才能导入


       UserInfoServiceImpl:(处理逻辑写这里,批量导入错误时才能回滚)


       	public void uploadExcel(InputStream in) throws Exception{
        
		//选取Excel文件得到工作薄Workbook
    	Workbook book= Workbook.getWorkbook(in);
    	//通过Workbook的getSheet方法选择第一个工作表(从0开始)
    	Sheet sheet = book.getSheet(0);
    	//打印行列
    	System.out.println(sheet.getColumns());
    	System.out.println(sheet.getRows());
    	//循环取到每个单元格
    	 for(int i=1;i<sheet.getRows();i++){
    		 
    		 UserInfo user = new UserInfo();
    		 
             
            	 //获取第二行第一列为姓名
                 Cell namecell=sheet.getCell(0,i);  
                 String userName=namecell.getContents();  
                 user.setUserName(userName);
                 
                 //性别
                 Cell sexcell=sheet.getCell(1,i);  
                 String userSex=sexcell.getContents();  
                 user.setUserSex(userSex);
                 
                 //电话号码
                 Cell phonecell=sheet.getCell(2,i);  
                 String userPhone=phonecell.getContents();  
                 user.setUserPhone(userPhone);
                 
                 //密码
                 Cell pwcell=sheet.getCell(3,i);  
                 String userPw=pwcell.getContents();  
                 user.setUserPw(userPw);
                 
                 //用户类型
                 Cell typecell=sheet.getCell(4,i);  
                 String userType=typecell.getContents();  
                 user.setUserType(userType);
             
                 //将用户添加到数据库
                 userdao.add(user);
             
         }
    	 
    	 book.close();
		
	}

       
6> UserInfoController:(传入InputStream)


	/**
	 * 导入Excel中用户信息到数据库
	 * @return
	 */
	@RequestMapping("user/imuser.do")
	public String uploadExcel(@RequestParam(value = "upfile", required = false) MultipartFile file,Model model){
		//提示信息
		String info = "操作失败";
		try {
			userservice.uploadExcel(file.getInputStream());
			info="操作成功!";
		} catch (Exception e) {
			e.printStackTrace();
		}
		//把提示信息传入到提示界面
		model.addAttribute("info",info);
		return "userinfo/userinfo_info";
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值