TOP

JavaEE開發之SpringMVC中的自定義消息轉換器與文件上傳(一)
2017-10-12 11:22:12 】 瀏覽:10621
Tags:

上篇博客我們詳細的聊了《JavaEE開發之SpringMVC中的靜態資源映射及服務器推送技術》,本篇博客依然是JavaEE開發中的內容,我們就來聊一下SpringMVC中的自定義消息轉發器(HttpMessageConverter)和SpringMVC中的文件上傳。消息轉發器在日常開發中是比較常用的,其可以靈活的將用戶發過來的消息按照自定義的格式進行解析,然后將解析的數據映射成Model,下方會給出自定義消息轉發器的詳細內容。聊完消息轉發器,我們還會聊一下Spring中MVC的文件上傳的操作。詳細的內容請看下方介紹。

 

一、自定義消息轉發器

接下來我們將實現自定義消息轉發器,在自定義消息轉發器時,我們需要基礎Springframework中的AbstractHttpMessageConverter這個抽象類。這個抽象類中就定義著我們自定義消息轉發器所需要的方法。我們將這些方法進行重寫就好。

 

1.創建消息轉發器的類

下方就是我們創建自定義消息轉發器的過程,我們將其命名為CustomMessageConverter類,如下所示:

  

 

接下來我們就來聊一下CustomMessageConverter中的內容优乐棋牌app下载,下方代碼段就是CustomMessageConverter類中的部分內容。在繼承類時,我們將泛型指定為StudentModel類,然后在該類中的構造器中,我們創建了一個新的媒體類型。該媒體類型就是我們自己定義的,并且指定了相應的編碼方式。在重寫的support()方法优乐棋牌app下载,我們來判斷所支持的Class是否與StudentModel的Class相同。如下所示:

  

 

然后下方兩個重寫的方法是負責數據的輸入和輸出的方法。在readInternal()方法中,就負責接收客戶端所發過來的消息,并按照我們自定義的媒體類型進行解析。此處我們可以將新的枚舉類型的格式按照“aaa-bbb-ccc”的方式進行傳輸优乐棋牌app下载,也就是參數之間用“-”進行拆分,而解析的時候我們就按照此規則進行拆分,然后賦值給相應的Model對象,并且將該對象進行返回。

而輸出方法writeInternal()中的一個參數就是上面輸入方法所返回的Model對象,我們可以在該方法中,根據用戶所提供的信息,給出輸出值。此處,我們將數據提供的數據前方加了“hello”進行了返回,如下所示。

  

 

2、Spring配置自定義消息轉發器

創建完消息轉發器的類后,接下來,我們就得在Spring配置文件中進行擴展配置。下方的代碼段就是Spring配置文件中對上述自定義消息轉發器的配置,在重寫的extendMessageConverters()方法中,將上述自定義的消息轉發對象進行添加即可,具體代碼如下所示。

  

 

3、創建上述消息轉發器的測試控制器

上面算是我們的消息轉發器的東西搞定了,接下來,我們就該對其進行測試了。下方代碼段就是我們創建的用來測試自定義消息轉發器的測試Controller,我們將其命名為MessageConverterController。我們在路由設置時,我們將其媒體類型設置為“application/x-parameter”類型。如下所示:

 1 package com.zeluli.springmvc.web;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestBody;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.ResponseBody;
 7 
 8 import com.zeluli.model.StudentModel;
 9 
10 @Controller
11 public class MessageConverterController {
12     @RequestMapping(value = "/convert", produces = {"application/x-parameter"})
13     @ResponseBody
14     public StudentModel converter(@RequestBody StudentModel student) {
15         return student;
16     }
17 }

 

4、測試頁面的創建

創建完測試類后,接下來我們就來創建我們的JSP測試頁面。我們創建一個message_converter.jsp頁面來像我們上面的Controller發起請求。在該文件中,主要使用了jQuery中的ajax進行請求的,而且是POST請求,具體如下所示。下方的代碼主要功能就是點擊一次按鈕,進行一次請求,然后將請求的數據添加到HTML文件的節點中,代碼如下所示。

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <script type="text/java script" src="assets/js/jquery.js"></script>
 8 <script type="text/java script">
 9     function req() {
10         $.ajax({
11             url: "convert",
12             data: "002034-zeluli",
13             type: "POST",
14             contentType: "application/x-parameter",
15             success: function(data){
16                 $("#resp").append("<h3>" + data + "</h3>");
17             }
18         });
19     }
20 </script>
21 <title>Insert title here</title>
22 </head>
2  
		

請關注公眾號獲取更多資料



首頁 上一頁 1 2 下一頁 尾頁 1/2/2
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇線程池 下一篇斐波那契數列小結