转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165. 本文出自 不怕报错 就怕不报错的小猿猿 的博客
提交后效果: 测试是否提交成功:
第一步:建立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。那么效果就是目标的效果图
我们跟前端的交互都是通过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():