SSM 文件上传到数据库以及加载出现(Servlet.init() for servlet springDispatcherServlet threw exception)错误的处理

SSM 文件上传以及加载出现500错误的处理

最近用SSM写项目的时候遇见了文件上传这个问题,困扰了一些时间,下面是解决方案。

SSM文件上传

1.导包
文件上传主要有两个包:
在这里插入图片描述
这里有两个文件的链接,可以直接去下载:
io
fileupload
点进去之后选择这个文件,然后点击下载就可以了:在这里插入图片描述
下载解压完成之后,选择好第一个进行导入。(另一个包同理)
在这里插入图片描述
2.SpringMVC中的配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 最大传输文件的大小 -->
	<property name="maxUploadSize" value="#{1024*1024*100}"></property>
	<!-- 默认的编码格式 -->
	<property name="defaultEncoding" value="utf-8"></property>
</bean>

这个id一个要写这个maxUploadSize当然这个类还有很多的属性可以设置,在这就不一一进行列举了。
3.创建页面
在这使用的是jsp,当然用html也是可以的。注意文件的传输一定要写这个enctype="multipart/form-data"

<form action="${ctp }/file" method="post" enctype="multipart/form-data">
 	用户头像:<input type ="file" name="heddering"/>
 	用户名:<input type ="text" name="username"/>
 	<input type="submit" value="提交">
 </form>

4.处理器

@RequestMapping("/file")
public String saveFile(@RequestParam(value="username",required=false)String name,
		@RequestParam("heddering")MultipartFile file,
		Model model) throws IllegalStateException, IOException {
	//file:这个就是前面表单中传输的文件
	
	//name属性的值
	System.out.println("文件的名字"+file.getName());
	//文件的名字
	System.out.println("文件的名字"+file.getOriginalFilename());
	//将文件进行保存
	file.transferTo(new File("E:\\文档\\"+file.getOriginalFilename()));
	
	model.addAttribute("msg","文件上传成功");
	//返回相应的页面
	return "forward:/index";
	
}

这样一个简单的文件传输就完成了。
下面简单介绍多个文件上传并且上传到数据库(数据库中设置成varchar就可以,主要保存照片存放的位置信息):
1.前端页面:
主要注意:保存到同一张表中的文件,input标签中的name属性的值要保持一致

    <form action="../saveprice" method="post" enctype="multipart/form-data">
     <div id="a1">       
         <img id="fileimg" src="" />
         <span class="btn upload">
             上传头像
             <input type="file" class="upload_pic" id="upload"  name = "picture" οnclick="upCh('upload','fileimg')">
         </span>
     </div>        
     <div class="b1">  
         <div class="b2">
             <p>身份证正面</p>
             <div class="b3">
                 <div class="b4">
                     <img id="fileimg1" src="" class="img" />
                     <span class="btn1 upload"  >
                             点击选择图片
                             <input type="file" class="upload_pic" id="upload1" name = "picture" οnclick="upCh('upload1','fileimg1')">
                             
                     </span>
                 </div>
             </div>
         </div>
         <div class="b2">
             <p>身份证反面</p>
             <div class="b3">
                 <div class="b4">
                     <img id="fileimg2" src=""class="img" />
                     <span class="btn1 upload">
                             点击选择图片
                             <input type="file" class="upload_pic" id="upload2" name = "picture" οnclick="upCh('upload2','fileimg2')">
                     </span>
                 </div>
             </div>
         </div>       
     </div>  
     
     <div class="b1">  
         <div class="b2">
             <p>职业资格证</p>
             <div class="b3">
                 <div class="b4">
                     <img id="fileimg3" src=""class="img" />
                     <span class="btn1 upload">
                             点击选择图片
                             <input type="file" class="upload_pic" id="upload3" name = "picture" οnclick="upCh('upload3','fileimg3')">
                     </span>
                 </div>
             </div>
         </div>
         <div class="b2">
             <p>其他证书</p>
             <div class="b3">
                 <div class="b4">
                     <img id="fileimg4" src=""class="img" />
                     <span class="btn1 upload">
                             点击选择图片
                             <input type="file" class="upload_pic" id="upload4" name = "other_picture" οnclick="upCh('upload4','fileimg4')">
                     </span>
                 </div>
             </div>
         </div>       
     </div>    
     <div class="b1">  
         <div class="b2">
             <p>其他证书</p>
             <div class="b3">
                 <div class="b4">
                     <img id="fileimg5" src=""class="img" />
                     <span class="btn1 upload">
                             点击选择图片
                             <input type="file" class="upload_pic" id="upload5" name="other_picture" onclick="upCh('upload5','fileimg5')">
                     </span>
                 </div>
             </div>
         </div>       
     </div>    
     <input type = "submit" value = "下一步" id="reg3">
     </form> 

2.处理器
主要注意:利用对象数组分别对于照片进行保存

@RequestMapping(value = "/saveprice",method = RequestMethod.POST)
public String saveUserPrice(@RequestParam(value = "picture") MultipartFile[] files,
                           @RequestParam(value = "other_picture")MultipartFile[] otherFiles,
                           HttpServletRequest request,
                           HttpSession session) throws IOException, ServletException {
   //获取该文件下static/img在本电脑上的路径(比如E:\shool\static\img)
  String root = request.getServletContext().getRealPath("static/img");
   //将照片循环进行便利
   for (MultipartFile file:files){
       //查看文件是否为空
       if(!file.isEmpty()){
       //将文件保存到指定的路径
           file.transferTo(new File(root+"\\"+file.getOriginalFilename()));
       }
   }
   //创建javabean对象,将照片保存的地址一一的设置进去
   PictureWithBLOBs pictureWithBLOBs = new PictureWithBLOBs();
   pictureWithBLOBs.sethSculpture(root+"\\"+files[0].getOriginalFilename());
   pictureWithBLOBs.setShenfz(root+"\\"+files[1].getOriginalFilename());
   pictureWithBLOBs.setShenff(root+"\\"+files[2].getOriginalFilename());
   pictureWithBLOBs.setZhiye(root+"\\"+files[3].getOriginalFilename());
   pictureWithBLOBs.setUser((String) session.getAttribute("user"));
	//保存到数据库
   userPriceService.saveUserPrice(pictureWithBLOBs);

   //其他的证书
   for (MultipartFile file:otherFiles){
       OtherPicture picture = new OtherPicture();
       picture.setUser((String) session.getAttribute("user"));
       //查看文件是否为空
       if(!file.isEmpty()){
           file.transferTo(new File(root+"\\"+file.getOriginalFilename()));
           picture.setoPicture(root+"\\"+file.getOriginalFilename());
       }
       otherPictureService.saveOtherPicture(picture);
   }
   return "manger";
}

在运行的过程中遇到了500的错误页面

Servlet.init() for servlet springDispatcherServlet threw exception
当时报错的信息显示上面那句话。找了很多的决解办法,最终找到了错误的原因:
jar包
1.首先检查jar包导入了吗
2.如果导入了之后还是报错,那么将这两个jar包在放在tomcat下面,如图:
在这里插入图片描述
这样问题就解决了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值