詳解SpringMVC中的日期處理和文件上傳操作
日期格式處理

在控制器中使用對(duì)象接收數(shù)據(jù)
前端:
<form action="test/add" method="post">
<p>圖書(shū)名稱:<input type="text" name="bookName"/></p>
<p>圖書(shū)作者:<input type="text" name="bookAuthor"/></p>
<p>圖書(shū)價(jià)格:<input type="text" name="bookPrice"/></p>
<p><input type="submit" value="提交"/></p>
</form>
后端
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/add")
//表單提交的多個(gè)數(shù)據(jù),在控制器方法中可以使用對(duì)象接收
//但是提交的數(shù)據(jù)的key必須要與對(duì)象的屬性名一致
public String addBook(Book book){
return "/tips.jsp";
}
}
日期格式處理
如果前端需要輸入日期數(shù)據(jù),在控制器中轉(zhuǎn)換成Date對(duì)象,SpringMVC要求前端輸入的日期格式必須為yyyy/MM/dd
如果甲方要求日期格式必須為指定的格式,而這個(gè)指定格式SpringMVC不接受,該如何處理呢?
自定義日期轉(zhuǎn)換器
創(chuàng)建自定義日期轉(zhuǎn)換器
/***
* 1.創(chuàng)建一個(gè)類(lèi)實(shí)現(xiàn)Converter接口,泛型指定從什么類(lèi)型轉(zhuǎn)換為什么類(lèi)型
* 2.實(shí)現(xiàn)convert轉(zhuǎn)換方法
*/
public class MyDateConverter implements Converter<String, Date> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
public Date convert(String s) {
Date date = null;
try {
date = sdf.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}

配置自定義轉(zhuǎn)換器
<!-- 聲明MVC使用注解驅(qū)動(dòng) -->
<mvc:annotation-driven conversion-service="converterFactory"/>
<bean id="converterFactory" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.qfedu.utils.MyDateConverter"/>
</set>
</property>
</bean>
文件上傳下載
SpringMVC框架部署
基于Maven創(chuàng)建web工程
添加SpringMVC所需的依賴
Spring:context aspects jdbc test web webmvc jackson
創(chuàng)建SpringMVC配置文件
在web.xml中配置SpringMVC的前端控制器
在web.xml中配置SpringMVC的編碼過(guò)濾器
配置springmvc靜態(tài)資源處理策略
文件上傳
案例:添加圖書(shū),同時(shí)提交圖書(shū)的封面圖片
前端提交文件
- 表單提示方式必須為post
- 表單enctype屬性設(shè)置為multipart/form-data
<form action="book/add" method="post" enctype="multipart/form-data">
<p>圖書(shū)名稱:<input type="text" name="bookName"/></p>
<p>圖書(shū)作者:<input type="text" name="bookAuthor"/></p>
<p>圖書(shū)價(jià)格:<input type="text" name="bookPrice"/></p>
<p>圖書(shū)封面:<input type="file" name="imgFile"/></p>
<p><input type="submit" value="提交"/></p>
</form>
控制器接收數(shù)據(jù)和文件
SpringMVC處理上傳文件需要借助于CommonsMultipartResolver文件解析器
添加依賴:commons-io commons-fileupload
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
在spring-servlet.xml中配置文件解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000"/>
<property name="maxInMemorySize" value="102400"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
控制器接收文件
在處理文件上傳的方法中定義一個(gè)MultiPartFile類(lèi)型的對(duì)象,就可以接受圖片了
@Controller
@RequestMapping("/book")
public class BookController {
@RequestMapping("/add")
public String addBook(Book book, MultipartFile imgFile, HttpServletRequest request) throws IOException {
System.out.println("--------------add");
//imgFile就表示上傳的圖片
//1.截取上傳文件的后綴名,生成新的文件名
String originalFilename = imgFile.getOriginalFilename();
String ext = originalFilename.substring( originalFilename.lastIndexOf(".") );
String fileName = System.currentTimeMillis()+ext;
//2.獲取imgs目錄在服務(wù)器的路徑
String dir = request.getServletContext().getRealPath("imgs");
String savePath = dir+"/"+fileName;
//3.保存文件
imgFile.transferTo( new File(savePath));
//4.將圖片的訪問(wèn)路徑設(shè)置到book對(duì)象
book.setBookImg("imgs/"+fileName);
//5.調(diào)用service保存book到數(shù)據(jù)庫(kù)
return "/tips.jsp";
}
}
文件下載
顯示文件列表
list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" rel="external nofollow" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 可選的 Bootstrap 主題文件(一般不用引入) -->
<link rel="stylesheet" rel="external nofollow" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<body>
<h4>文件列表</h4>
<div class="row" id="container"></div>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
$.get("book/list",function(res){
for (var i = 0; i < res.length; i++) {
var fn = res[i];
var htmlStr = "<div class='col-lg-2 col-md-3 col-sm-4 col-xs-6'><div class='thumbnail'><img src='imgs/"+fn+"' alt='...'> <div class='caption'><p><a href='#' class='btn btn-primary' role='button'>下載</a></p></div> </div> </div>";
$("#container").append(htmlStr);
}
},"json");
</script>
</body>
</html>BookController
@RequestMapping("/list")
@ResponseBody
public String[] listImgs(HttpServletRequest request){
//從imgs目錄下獲取所有的圖片信息
String dir = request.getServletContext().getRealPath("imgs");
File imgDir = new File(dir);
String[] fileNames = imgDir.list();
return fileNames;
}
實(shí)現(xiàn)文件下載
list.jsp
var htmlStr = "<div class='col-lg-2 col-md-3 col-sm-4 col-xs-6'><div class='thumbnail'><img src='imgs/"+fn+"' alt='...'> <div class='caption'><p><a href='book/download?fname="+fn+"' class='btn btn-primary' role='button'>下載</a></p></div> </div> </div>";
BookController
@RequestMapping("/download")
public void downloadImg(String fname, HttpServletRequest request, HttpServletResponse response) throws Exception {
//從imgs目錄找到當(dāng)前文件
String dir = request.getServletContext().getRealPath("imgs");
String filePath = dir+"/"+fname;
FileInputStream fileInputStream = new FileInputStream(filePath);
response.setContentType("application/exe");
response.addHeader("Content-Disposition","attachment;filename="+fname);
IOUtils.copy(fileInputStream, response.getOutputStream());
}
以上就是詳解SpringMVC中的日期處理和文件上傳操作的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC日期處理 文件上傳的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringMVC文件上傳中要解決的問(wèn)題大匯總
- SpringMVC教程之文件上傳與下載詳解
- SpringMVC使用ResponseEntity實(shí)現(xiàn)文件上傳下載
- SpringMVC實(shí)現(xiàn)文件上傳下載功能
- SpringMVC實(shí)現(xiàn)文件上傳下載的全過(guò)程
- SpringMVC實(shí)現(xiàn)文件上傳與下載、攔截器、異常處理器等功能
- springMVC實(shí)現(xiàn)文件上傳和下載
- SpringMVC實(shí)現(xiàn)文件上傳與下載
- SpringMVC使用MultipartResolver實(shí)現(xiàn)文件上傳
相關(guān)文章
SpringMVC自定義消息轉(zhuǎn)換器的使用其實(shí)很簡(jiǎn)單
這篇文章主要介紹了SpringMVC自定義消息轉(zhuǎn)換器的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Java Cmd運(yùn)行Jar出現(xiàn)亂碼的解決方案
這篇文章主要介紹了Java Cmd運(yùn)行Jar出現(xiàn)亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Springmvc返回html頁(yè)面問(wèn)題如何解決
這篇文章主要介紹了Springmvc返回html頁(yè)面問(wèn)題如何解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn)
本文主要介紹了IDEA修改生成jar包名字的兩種方法實(shí)現(xiàn),通過(guò)簡(jiǎn)單的步驟,您可以修改項(xiàng)目名稱并在打包時(shí)使用新的名稱,具有一定的參考價(jià)值,感興趣的可以了解下2023-08-08
java實(shí)現(xiàn)對(duì)excel文件的處理合并單元格的操作
這篇文章主要介紹了java實(shí)現(xiàn)對(duì)excel文件的處理合并單元格的操作,開(kāi)頭給大家介紹了依賴引入代碼,表格操作的核心代碼,代碼超級(jí)簡(jiǎn)單,需要的朋友可以參考下2021-07-07
Netty分布式ByteBuf使用的底層實(shí)現(xiàn)方式源碼解析
這篇文章主要為大家介紹了Netty分布式ByteBuf使用底層實(shí)現(xiàn)方式源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
Java實(shí)現(xiàn)將數(shù)組的元素用逗號(hào)連接的多種方法
在 Java 開(kāi)發(fā)中,我們經(jīng)常需要將數(shù)組中的元素用逗號(hào)連接成一個(gè)字符串,這種需求在日志記錄、數(shù)據(jù)導(dǎo)出、API 響應(yīng)等場(chǎng)景中非常常見(jiàn),本文將詳細(xì)介紹如何在 Java 中實(shí)現(xiàn)這一功能,并提供多種簡(jiǎn)潔的方法和優(yōu)化建議,需要的朋友可以參考下2025-01-01
Java?Git?Commit?Message使用規(guī)范
這篇文章主要介紹了Java?Git?Commit?Message使用規(guī)范,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-08-08

