springmvc的文件上传和json数据转化
springmvc的文件上传
struts的文件上传回顾
1,上传界面有所要求,需要多功能表单
enctype="mutipart/form-data" method="post"
2,需要一个处理文件上传的子控制器
UpladfileAction
属性:
File file
String fileFileName
String fileContentType
3,完成图片的虚拟映射
4,为了开发便捷,需要引入common-fileUpload jar包
FileUtil.copy(source,target)//source是来源,target是去处
可以参考我博文:https://blog.csdn.net/water_java/article/details/100074666
springmvc文件上传
1,上传界面有所要求,需要多功能表单
enctype=“mutipart/form-data” method=“post”
upload.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
Created by IntelliJ IDEA.
User: water
Date: 2019/11/24
Time: 15:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传界面</title>
</head>
<body>
<%--<from action="${pageContext.request.contextPath}/goods/upload" method="post" enctype="multipart/form-data">--%>
<%--待上传文件:<input type="file" name="file">--%>
<%--<<input type="submit">--%>
<%--</from>--%>
<
<form action="${pageContext.request.contextPath}/goods/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit"value="上传">
</form>
</body>
</html>
2,需要一个处理文件上传的方法
利用注解:@requestMapping("/xxx")
File file
String fileFileName
String fileContentType
三合一使用 MutipartFile file
@RequestMapping("/upload")
public String upload(MultipartFile file){
System.out.println("filename:"+file.getOriginalFilename());
System.out.println("contentType:"+file.getContentType());
try {
FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/img/"+file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/goods/list";
}
3,完成图片的虚拟映射
我们可以在idea的tomcat 添加虚拟映射
4,为了开发便捷,需要引入common-fileUpload jar包
FileUtil.copyinputStreamtoFile(inputstream,target)
<!--文件上传-->
<commons-fileupload.version>1.3.3</commons-fileupload.version>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
springmvc-servlet.xml添加
<!--文件上传解析-->
<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>
结果
json数据的转换
@ResponseBody把结果进行json转换
三种格式
①Map
②List
③String
//第一种
@ResponseBody
@RequestMapping("/json1")
public Map json1(HttpServletRequest request) {
Map map=new HashMap();
PageBean pageBean=new PageBean();
pageBean.setRequest(request);
List<Map> list= goodsService.listPage(new Goods(),pageBean);
map.put("total",pageBean.getTotal());
map.put("data",list);
return map;
}
//第二种
@ResponseBody
@RequestMapping("/json2")
public List<Map> json2(HttpServletRequest request) {
PageBean pageBean=new PageBean();
pageBean.setRequest(request);
List<Map> list= goodsService.listPage(new Goods(),pageBean);
return list;
}
//第三种
@ResponseBody
@RequestMapping("/json3")
public String json3(HttpServletRequest request) {
PageBean pageBean=new PageBean();
pageBean.setRequest(request);
List<Map> list= goodsService.listPage(new Goods(),pageBean);
return "list size:" +list.size();
}
返回结果我就摆出来,仔细发现格式是一一对应的