亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2022年08月19日 09:22:08   作者:小威要向諸佬學(xué)習(xí)呀  
這篇文章主要為大家詳細(xì)介紹了SpringMVC中的日期處理和文件上傳操作方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定借鑒價(jià)值,需要的可以參考一下

日期格式處理

在控制器中使用對(duì)象接收數(shù)據(jù)

前端:

 <form action="test/add" method="post">
      <p>圖書(shū)名稱(chēng):<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所需的依賴(lài)

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ū)名稱(chēng):<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文件解析器

添加依賴(lài):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)文章!

相關(guān)文章

  • SpringBoot與Dubbo整合的方式詳解

    SpringBoot與Dubbo整合的方式詳解

    這篇文章主要介紹了SpringBoot與Dubbo整合的方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題

    解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題

    這篇文章主要介紹了解決SpringMVC使用@RequestBody注解報(bào)400錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 詳解springboot中使用異步的常用兩種方式及其比較

    詳解springboot中使用異步的常用兩種方式及其比較

    這篇文章主要介紹了詳解springboot中使用異步的常用兩種方式及其比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Spring中@Value使用詳解及SPEL表達(dá)式

    Spring中@Value使用詳解及SPEL表達(dá)式

    這篇文章主要介紹了Spring中@Value使用詳解及SPEL表達(dá)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • ApplicationListenerDetector監(jiān)聽(tīng)器判斷demo

    ApplicationListenerDetector監(jiān)聽(tīng)器判斷demo

    這篇文章主要為大家介紹了ApplicationListenerDetector監(jiān)聽(tīng)器判斷demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    JAVA設(shè)計(jì)模式之組合模式原理與用法詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之組合模式,簡(jiǎn)單說(shuō)明了組合模式的原理,并結(jié)合實(shí)例分析了java組合模式的具體用法,需要的朋友可以參考下
    2017-08-08
  • JAVA異常處理捕獲與拋出原理解析

    JAVA異常處理捕獲與拋出原理解析

    這篇文章主要介紹了JAVA異常處理捕獲與拋出原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java藍(lán)橋杯試題

    java藍(lán)橋杯試題

    這篇文章主要介紹了java藍(lán)橋杯試題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例

    Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例

    這篇文章主要介紹了Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 淺談java中的對(duì)象、類(lèi)、與方法的重載

    淺談java中的對(duì)象、類(lèi)、與方法的重載

    本文主要對(duì)java中的對(duì)象、類(lèi)、與方法的重載進(jìn)行簡(jiǎn)要概述,具有一定的參考價(jià)值,需要的朋友一起來(lái)看下吧
    2016-12-12

最新評(píng)論