zoukankan      html  css  js  c++  java
  • SpringMVC第五篇【方法返回值、数据回显、idea下配置虚拟目录、文件上传】

    Controller方法返回值

    Controller方法的返回值其实就几种类型,我们来总结一下….

    • void
    • String
    • ModelAndView
    • redirect重定向
    • forward转发

    数据回显

    其实数据回显我们现在的话就一点也不陌生了….我们刚使用EL表达式的时候就已经学会了数据回显了,做SSH项目的时候也有三圈问题的数据回显…

    在页面上数据回显本质上就是获取reqeust域的值..

    而在我们SpringMVC中,我们是使用Model来把数据绑定request域对象中的

    一般地我们都是使用model.addAttribute()的方式把数据绑定到request域对象中…其实SpringMVC还支持注解的方式

    @ModelAttribute注解

    我们可以将请求的参数放到Model中,回显到页面上

    这里写图片描述

    上面这种用法和model.addAttribute()的方式是没啥区别的,也体现不了注解的方便性…

    而如果我们要回显的数据是公共的话,那么我们就能够体会到注解的方便性了,我们把公共需要显示的属性抽取成方法,将返回值返回就行了。

    这里写图片描述

    那我们就不用在每一个controller方法通过Model将数据传到页面。


    SpringMVC文件上传

    我们使用Struts2的时候,觉得Struts2的文件上传方式比传统的文件上传方式好用多了…

    http://blog.csdn.net/hon_3y/article/details/71091593

    既然我们正在学习SpringMVC,那么我们也看一下SpringMVC究竟是怎么上传文件的…

    配置虚拟目录

    在这次,我们并不是把图片上传到我们的工程目录中…

    那为啥不将图片直接上传到我们的工程目录中呢???我们仔细想想,按照我们之前的做法,直接把文件上传到工程目录,而我们的工程目录是我们写代码的地方 …往往我们需要备份我们的工程目录。

    如果把图片都上传到工程目录中,那么就非常难以处理图片了…

    因此,我们需要配置Tomcat的虚拟目录来解决,把上传的文件放在虚拟目录上

    又值得注意的是,Idea使用的Tomcat并不能使用传统的配置方式,也就是修改server.xml方式来配置虚拟目录,在Idea下好像不支持这种做法

    有兴趣的同学可以去测试一下:

    http://blog.csdn.net/hon_3y/article/details/54412484

    那么我在网上已经找到了对应的解决办法,就是如果在idea上配置虚拟目录

    http://blog.csdn.net/LABLENET/article/details/51160828

    检测是否配置成功:

    这里写图片描述

    快速入门

    在SpringMVC中文件上传需要用到的jar包

    • commons-fileupload-1.2.2.jar
    • commons-io-2.4.jar

    配置文件上传解析器

    
    
        <!-- 文件上传 -->
        <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 设置上传文件的最大尺寸为5MB -->
            <property name="maxUploadSize">
                <value>5242880</value>
            </property>
        </bean>

    测试的JSP

    
    <%--
      Created by IntelliJ IDEA.
      User: ozc
      Date: 2017/8/11
      Time: 9:56
      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}/upload.action" method="post" enctype="multipart/form-data" >
        <input type="file" name="picture">
        <input type="submit" value="submit">
    </form>
    
    </body>
    </html>
    

    值得注意的是,在JSP的name属性写的是picture,那么在Controller方法参数的名称也是要写picture的,否则是获取不到对应的文件的..

    
    @Controller
    public class UploadController {
        @RequestMapping("/upload")
        //MultipartFile该对象就是封装了图片文件
        public void upload(MultipartFile picture) throws Exception {
            System.out.println(picture.getOriginalFilename());
        }
    }
    

    这里写图片描述

  • 相关阅读:
    Django其五
    数据库操作
    小程序navigateBack,子页面传值给父页面
    深拷贝
    sql语句case when 以及left()
    IE高级配置中,存在SSL支持协议,例如SSL TLS。
    linux服务器后台运行服务
    各种浏览器文件下载
    localStorage sessionStorage 用法
    url编码乱码问题解决
  • 原文地址:https://www.cnblogs.com/zhong-fucheng/p/7554355.html
Copyright © 2011-2022 走看看