springMVC文件上传和springMVC对json的处理
转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165.
本文出自 不怕报错 就怕不报错的小猿猿 的博客
springMVC文件上传和对json的支持
目录结构图

1、springMVC文件上传
1.1 实现的目标效果图

提交后效果:

测试是否提交成功:


1.2 实现的操作步骤过程
1.2.1 实现文件上传的思路步骤(语法)
springMVC的文件上传:
* 1、上传界面
* form多功能表单enctype="mutipart/form-data" method="post"
* 2、写一个方法@requestMapping("/upload")
* MutipartFile file
* 3、完成图片的虚拟映射
* 4、为了开发便捷,需要引入common-fileUpload
* FileUtil.copyinputStreamtoFile(inputStream,target)
第一步:建立upload.jsp文件上传的界面
upload.jsp:
<%--
Created by IntelliJ IDEA.
User: zjjt
Date: 2020/10/21
Time: 0:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/book/upload" method="post" enctype="multipart/form-data">
待上传文件:<input type="file" name="file">
<input type="submit">
</form>
</body>
</html>

第二步:在pom.xml依赖中导入common-fileupload依赖
在pom.xml添加依赖jar包:
<!--版本号-->
<commons-fileupload.version>1.3.3</commons-fileupload.version>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>

第三步:在BookController.java中添加一个文件上传的方法
添加文件上传的upload(MultipartFile file)方法:
注意:FileUtils是导org.apache.commons.io.FileUtils这个包
/**
* springMVC的文件上传:
* 1、上传界面
* form多功能表单enctype="mutipart/form-data" method="post"
* 2、写一个方法@requestMapping("/upload")
* MutipartFile file
* 3、完成图片的虚拟映射
* 4、为了开发便捷,需要引入common-fileUpload
* FileUtil.copyinputStreamtoFile(inputStream,target)
* @param file
* @return
*/
@RequestMapping("/upload")
public String upload(MultipartFile file){//file名字最好是要跟jsp传过来的name属性值保持一致
// 获取文件名
System.out.println(file.getOriginalFilename());
// 获取文件的类型
System.out.println(file.getContentType());
try {
/**
* file.getInputStream():获取文件的源头(第一个参数)
* new File("E:/temp/"+file.getOriginalFilename()):将文件写到哪里去(第二个参数),注意斜杠的写法
*/
FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/temp/"+file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
// 上传成功后跳到哪个界面
return "redirect:/book/list";
}

第四步:完成图片的虚拟映射,配置如下图所示




第五步:在springmvc-servlet.xml中添加多功能分解器multipartResolver
springmvc-servlet.xml:
<!--multipartResolver:多功能分解器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 文件最大大小(字节) 1024*1024*50=50M-->
<property name="maxUploadSize" value="52428800"></property>
<!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常-->
<property name="resolveLazily" value="true"/>
</bean>

启动Tomcat。那么效果就是目标的效果图
2、springMVC对json的处理
2.1测试的操作步骤过程(案例)
我们跟前端的交互都是通过json来进行交互的
第一步:在HelloController.java中添加几个json方法
HelloController.java:
@Autowired
private BookService bookService;
/**
* json1():返回map集合,并且套list
* @param req
* @return
*/
// @ResponseBody注解:将结果进行json转换
@ResponseBody
@RequestMapping("/json1")
public Map json1(HttpServletRequest req){
// 以前的写法
// ObjectMapper om=new ObjectMapper();
// String s = om.writeValueAsString("这里面即可以放map,也可以放list,也可以放字符串");
PageBean pageBean=new PageBean();
pageBean.setRequest(req);
// list查询的是不带任何条件的前十条数据
List<Map> list = bookService.listPager(new Book(), pageBean);
Map map=new HashMap();
// 返回总记录数
map.put("total",101);
// 返回数据
map.put("data",list);
// 返回map
return map;
}
/**
* json2():返回list
* @param req
* @return
*/
@ResponseBody
@RequestMapping("/json2")
public List<Map> json2(HttpServletRequest req){
// 以前的写法
// ObjectMapper om=new ObjectMapper();
// String s = om.writeValueAsString("这里面即可以放map,也可以放list,也可以放字符串");
PageBean pageBean=new PageBean();
pageBean.setRequest(req);
List<Map> list = bookService.listPager(new Book(), pageBean);
return list;
}
/**
* json3():直接返回字符串
* @param req
* @return
*/
@ResponseBody
@RequestMapping("/json3")
public String json3(HttpServletRequest req){
return "springmvc string to json";
}



第二步:运行,测试结果如下
json1():

json2():

json3():
