1. 程式人生 > >【SpringMVC學習10】SpringMVC對RESTfull的支援

【SpringMVC學習10】SpringMVC對RESTfull的支援

RESTful架構,就是目前流行的一種網際網路軟體架構。它結構清晰、符合標準、易於理解、擴充套件方便,所以正得到越來越多網站的採用。RESTful架構對url進行規範,寫RESTful格式的url是什麼樣子的呢?我們一般請求的url是類似這樣子的: 
http://...../xxx.action?id=001&type=aaa 
  而REST的url風格是什麼樣子呢?一般它類似於: 
http://..../xxx/001 
  所以REST有個很明顯的特點:使url變得簡潔,將引數通過url傳到服務端。springmvc也是支援這種REST風格的url的,我們定義一個controller來測試一下:

//
查詢商品資訊,輸出json,使用RESTful @RequestMapping("/itemsView/{id}") public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception { ItemsCustom itemsCustom = itemsService.findItemsById(id); return itemsCustom; }

@ResponseBody是用來將itemsCustom轉成json的註解,而@PathVariable註解則是跟REST有關了,@RequestMapping(value=”/ itemsView/{id}”)中的{id}表示一個佔位符,那麼這裡面傳過來的值會傳到被@PathVariable標記的形參上,如果形參和佔位符中的變數一樣的話,可以不用再註解中指定,否則註解中要指定這個佔位符中的變數(即id)。這樣的話,引數就可以通過url傳到形參中來了。 
  但是這樣還不行,還要在前端控制器中針對REST進行配置,如下:

<!-- 配置springmvc的前端控制器DispatcherServlet,REST配置 -->
<servlet>
    <servlet-name>springmvc_rest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
        <param-name>contextConfigLocation</
param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc_rest</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

攔截的是所有的url(/),這個配置跟之前配置好的前端控制器是沒有衝突的,可以並存。經過這樣配置後,就可以在瀏覽器中輸入http://localhost:8080/SpringMVC_Study/itemsView/1來測試返回到瀏覽器的資料了,可以看到返回一串json資料。 
  但是有個問題,使用上面的配置後會攔截所有的url,那麼對靜態資源也會攔截,所以DispatcherServlet也會解析靜態資源,但是這樣的話就會出錯,所以我們要設定一下不讓它解析靜態資源在springmvc.xml。如:

<!-- 靜態資源解析,包括js,css,img... -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/img/" mapping="/img/**"></mvc:resources>

如果還有其他靜態資源的話,也要設定一下,這樣就不會去解析靜態資源了,訪問靜態資源的時候就直接訪問即可。 

相關推薦

SpringMVC學習10SpringMVCRESTfull支援

RESTful架構,就是目前流行的一種網際網路軟體架構。它結構清晰、符合標準、易於理解、擴充套件方便,所以正得到越來越多網站的採用。RESTful架構對url進行規範,寫RESTful格式的url是什麼樣子的呢?我們一般請求的url是類似這樣子的: http://...../xxx.action?id=001

SpringMVC學習08SpringMVCRESTfull支援

RESTful架構,就是目前流行的一種網際網路軟體架構。它結構清晰、符合標準、易於理解、擴充套件方便,所以正得到越來越多網站的採用。 RESTful架構對url進行規範,寫RESTful格式的url是什麼樣子的呢?我們一般請求的url是類似這樣子的: http://....

SpringMVC學習09SpringMVC中的攔截器

Springmvc的處理器攔截器類似於Servlet 開發中的過濾器Filter,用於對處理器進行預處理和後處理。本文主要總結一下springmvc中攔截器是如何定義的,以及測試攔截器的執行情況和使用方法。 1. springmvc攔截器的定義和配置 1.1 springmvc攔截器

SpringMVC學習07SpringMVC與前臺的json資料互動

json資料格式在介面呼叫中、html頁面中比較常用,json格式比較簡單,解析也比較方便,所以使用很普遍。在springmvc中,也支援對json資料的解析和轉換,這篇文章主要總結一下springmvc中如何和前臺互動json資料。 1. 兩種互動形式  springmvc和前臺互

SpringMVC學習06SpringMVC中的資料校驗

  這一篇博文主要總結一下springmvc中對資料的校驗。在實際中,通常使用較多是前端的校驗,比如頁面中js校驗,對於安全要求較高的建議在服務端也要進行校驗。服務端校驗可以是在控制層conroller

SpringMVC學習09SpringMVC與前臺的json資料互動

  json資料格式在介面呼叫中、html頁面中比較常用,json格式比較簡單,解析也比較方便,所以使用很普遍。在springmvc中,也支援對json資料的解析和轉換,這篇文章主要總結一下spring

MyBatis學習10高階對映之多多查詢

  本文來總結一下mybatis中的多對多對映,從第8節的文章中可以看出,使用者表和商品表示多對多關係,它們兩的多對多是通過訂單項和訂單明細這兩張表所關聯起來的,那麼這一節主要來總結一下使用者表和商

MyBatis學習10關聯關係association:11關聯的三種方法

本篇主要講關聯關係:一對一關係與一對多關係。 先建5個表: DROP TABLE IF EXISTS `category`; CREATE TABLE `category` ( `id` int(10) unsigned NOT NULL A

python學習-5面向象的python

usr 私有 運算 .sh __call__ pre style ring 控制 python是一種面向對象的編程語言,雖然與C++一樣,支持面向過程的程序設計,python完全可以使用函數、模塊等方式來完成工作,但是當使用python編寫一個較大的項目時,則應該考慮使用面

機器學習實戰第6章 支援向量機(Support Vector Machine / SVM)

第6章 支援向量機 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>

機器學習實戰第6章 支援向量機

def smoSimple(dataMatIn, classLabels, C, toler, maxIter): """smoSimple Args: dataMatIn 特徵集合 classLabels 類別標籤 C 鬆弛變數

SpringMVC學習04Spring、MyBatis和SpringMVC的整合

前兩篇springmvc的文章中都沒有和mybatis整合,都是使用靜態資料來模擬的,但是springmvc開發不可能不整合mybatis,另外mybatis和spring的整合我之前學習mybatis的時候有寫過一篇,但是僅僅是整合mybatis和spring,所以這篇文

SpringMVC學習筆記04 處理模型資料

在方法引數上使用@ModelAttribute是為了從模型中獲取資料來傳遞到該引數上。如果模型中沒有該對應的屬性名,那麼該型別的引數首先會例項化然後在加入到模型中,關於該型別的例項來自哪裡是一個比較複雜的問題,如果有興趣可以參考SpringMVC的文件。;如果發現有對應的屬性名,那麼引數的欄位就會被該模型值填

SpringMVC學習筆記03 使用maven建立springMVC專案

6.建立controller@ControllerpublicclassIndexController {/**    * 主頁設定 "/"的話預設情況下就訪問    * @return    */@RequestMapping("/")public String home() {return"home"; 

Spark深入學習 -10基於spark構建企業級流處理系統

變現 大內存 空間換時間 detail python 訪問量 新版本 kafak 計算框架 ----本節內容------- 1.流式處理系統背景 1.1 技術背景 1.2 Spark技術很火 2.流式處理技術介紹 2.1流式處理技術概念 2.

extjs6學習筆記1.10 初始: 定義類

ria nbsp src clas -1 學習 ref 定義類 mage http://www.extjs-tutorial.com/extjs/define-new-class-in-extj

JAVAEE學習筆記hibernate02:實體規則、象狀態、緩存、事務、批量查詢和實現客戶列表顯示

使用 ins tro trace ges create 綁定 criteria 命名 一、hibernate中的實體規則 實體類創建的註意事項  1.持久化類提供無參數構造  2.成員變量私有,提供共有get/set方法訪問.需提供屬性  3.持久化類中的屬性,應盡量使用包

知了堂學習筆記/JavaScript象--/暖妮

兩個 mat 如果 社區 日期 筆記 註意 計算 round JavaScript對象 1.什麽是JavaScript對象? JavaScript 中的所有事物都是對象:字符串、數字、數組、日期,等等。 在 JavaScript 中,對象是擁有屬性和方法的數據。 2.Jav

知了堂學習筆記--關於Node.js訪問數據庫連接池的理解與簡單的建立---@wan<

png 程序 數據庫連接池 新建 -s const 服務 pre conf 是什麽數據庫連接池 官方解釋:數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有

吳恩達深度學習工程師 04.卷積神經網絡 第三周目標檢測 (1)基本的象檢測算法

元素 需要 有關 卷積 訓練 特定 步長 來看 選擇 該筆記介紹的是《卷積神經網絡》系列第三周:目標檢測(1)基本的對象檢測算法 主要內容有: 1.目標定位 2.特征點檢測 3.目標檢測 目標定位 使用算法判斷圖片中是不是目標物體,如果是還要再圖片中標出其位置並