SpringMVC第五篇【方法返回值、數據回顯、idea下配置虛擬目錄、文件上傳】

Controller方法返回值

Controller方法的返回值其實就幾種類型,咱們來總結一下….css

  • void
  • String
  • ModelAndView
  • redirect重定向
  • forward轉發

數據回顯

其實數據回顯咱們如今的話就一點也不陌生了….咱們剛使用EL表達式的時候就已經學會了數據回顯了,作SSH項目的時候也有三圈問題的數據回顯…html

在頁面上數據回顯本質上就是獲取reqeust域的值..java

而在咱們SpringMVC中,咱們是使用Model來把數據綁定request域對象中的web

通常地咱們都是使用model.addAttribute()的方式把數據綁定到request域對象中…其實SpringMVC還支持註解的方式spring

@ModelAttribute註解

咱們能夠將請求的參數放到Model中,回顯到頁面上markdown

這裏寫圖片描述

上面這種用法和model.addAttribute()的方式是沒啥區別的,也體現不了註解的方便性…mvc

而若是咱們要回顯的數據是公共的話,那麼咱們就可以體會到註解的方便性了,咱們把公共須要顯示的屬性抽取成方法,將返回值返回就好了。app

這裏寫圖片描述

那咱們就不用在每個controller方法經過Model將數據傳到頁面。ide


SpringMVC文件上傳

咱們使用Struts2的時候,以爲Struts2的文件上傳方式比傳統的文件上傳方式好用多了…post

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());
    }
}

這裏寫圖片描述

相關文章
相關標籤/搜索