Controller方法的返回值其實就幾種類型,咱們來總結一下….css
其實數據回顯咱們如今的話就一點也不陌生了….咱們剛使用EL表達式的時候就已經學會了數據回顯了,作SSH項目的時候也有三圈問題的數據回顯…html
在頁面上數據回顯本質上就是獲取reqeust域的值..java
而在咱們SpringMVC中,咱們是使用Model來把數據綁定request域對象中的web
通常地咱們都是使用model.addAttribute()的方式把數據綁定到request域對象中…其實SpringMVC還支持註解的方式spring
@ModelAttribute
註解咱們能夠將請求的參數放到Model中,回顯到頁面上markdown
上面這種用法和model.addAttribute()的方式是沒啥區別的,也體現不了註解的方便性…mvc
而若是咱們要回顯的數據是公共的話,那麼咱們就可以體會到註解的方便性了,咱們把公共須要顯示的屬性抽取成方法,將返回值返回就好了。app
那咱們就不用在每個controller方法經過Model將數據傳到頁面。ide
咱們使用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包
配置文件上傳解析器
<!-- 文件上傳 --> <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());
}
}