springMVC文件上传和springMVC对json的处理

转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165.
本文出自 不怕报错 就怕不报错的小猿猿 的博客

目录结构图

在这里插入图片描述

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():
在这里插入图片描述