Spring MVC 基於Method的對映規則(註解版)
在Restful風格的web開發中,根據不同的請求方法使用相應的控制器處理邏輯成為核心需求,下面就看看如何在Spring MVC中識別不同的請求方法。
請求方法
在Http中,請求的方法有很多種,最常見的就是GET、POST,他們的差異就不過多贅述了。由於Restful概念的興起,即使用Url的不同請求方法來控制業務方法,很多請求方法都開始流行起來,比如PUT、DELETE等等。
那麼就先介紹下各個請求方法的使用場景吧!
GET
平時網頁的一些基本的URL都是GET請求的,用於執行查詢操作。
但是由於GET中URL是有長度的限制的,而GET會把所有的引數都放在URL中,比如
xxx?name=xingoo
因此就會有下面的問題:
- 1 資料都明文暴露,使用者可以直接看到
- 2 資料長度有限制
POST
由於上面GET的缺點,POST正好彌補了這些問題。POST方法把資料都存放在body裡面,這樣即突破了長度的限制;又保證使用者無法直接看到。在使用表單時,比較常用
HEAD
HEAD請求只會返回首部的資訊,不會返回相應體。通常用於測試資料是否存在、當做心跳檢測等等。
PUT
與GET相反,用於改變某些內容。
DELETE
刪除某些資源
TRACE
可以理解成,我們為了看看一條請求在到達服務前資料發生了什麼變化。可以使用這個命令,它會在最後一站返回原始資訊,這樣就可以觀察到中間是否修改過請求。(經常會用於跨站攻擊,所以有一定的安全隱患)
OPTIONS
詢問伺服器支援的方法。
PATCH
這個方法不太常見,是servlet 3.0提供的方法,主要用於更新部分欄位。與PUT方法相比,PUT提交的相當於全部資料的更新,類似於update;而PATCH則相當於更新部分欄位,如果資料不存在則新建,有點類似於neworupdate。
Spring中的使用方法
在Spring MVC中,RequestMethod提供了方法的集合:
public enum RequestMethod {
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}
在控制器中,我們可以通過設定RequestMapping的method方法,改變接收資料controller:
@Controller
public class HelloController {
@RequestMapping(value="/test",method=RequestMethod.GET)
public @ResponseBody String get(){
return "from get";
}
@RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody String post(){
return "from post";
}
}
雖然上面的Url是一樣的,但是由於請求方法不同,他們會根據請求方法使用相應的控制器方法處理請求。
相關推薦
Spring MVC 基於Method的對映規則(註解版)
在Restful風格的web開發中,根據不同的請求方法使用相應的控制器處理邏輯成為核心需求,下面就看看如何在Spring MVC中識別不同的請求方法。 請求方法 在Http中,請求的方法有很多種,最常見的就是GET、POST,他們的差異就不過多贅述了。由於Restful概念的興起,即使用Url的不同請求方
Spring MVC 基於URL的對映規則(註解版)
好幾天沒有跟進Spring MVC的學習了,之前看了點原始碼都忘的差不多了。這次就跟著之前的問題,繼續總結下Spring MVC中的小知識。 關於SpringMVC的小demo可以參考這裡! url-pattern 如果看過前一篇入門的帖子,應該瞭解到sprin
從頭認識Spring-3.8 簡單的AOP日誌實現(註解版)-擴展添加檢查訂單功能,以便記錄並檢測輸入的參數
this proxy snippet 輸入 name util java framework -i 這一章節我們討論一下擴展添加檢查訂單功能,以便記錄並檢測輸入的參數。1.domain蛋糕類:package com.raylee.my_new_spring.my_new
Spring MVC-處理程序映射(Handler Mapping)-控制器類名稱處理程序映射(Controller Class Name Handler Mapping)示例(轉載實踐)
back app ppi lsp class obj ner schema over 以下內容翻譯自:https://www.tutorialspoint.com/springmvc/springmvc_controllerclassnamehandlermapping.h
Spring MVC-視圖解析器(View Resolverr)-內部資源查看解析器(Internal Resource View Resolver)示例(轉載實踐)
ast mes 技術 子文件夾 schema html cati href tree 以下內容翻譯自:https://www.tutorialspoint.com/springmvc/springmvc_internalresourceviewresolver.htm 說
Spring MVC-視圖解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(轉載實踐)
quest springmvc tab type elm utf servle err path 以下內容翻譯自:https://www.tutorialspoint.com/springmvc/springmvc_multiple_resolver_mapping.htm
資料結構實現 10.2:對映_基於AVL樹實現(C++版)
資料結構實現 10.2:對映_基於AVL樹實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 修改操作 2.4 查詢操作 2.5 其他操作 3.
資料結構實現 5.2:對映_基於連結串列實現(C++版)
資料結構實現 5.2:對映_基於連結串列實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 修改操作 2.4 查詢操作 2.5 其他操作 3. 演
Spring學習5-Spring整合JDBC及其事務處理(註解方式)
2、步驟二:使用JdbcTemplate類操作資料庫: Spring把JDBC中重複的操作建立成了一個模板類:org.springframework.jdbc.core.JdbcTemplate。 A:要使用JdbcTemplate,需要為每一個DAO配置一個JdbcTemplate例項:
Spring boot Mybatis 整合(註解版)
之前寫過一篇關於springboot 與 mybatis整合的博文,使用了一段時間spring-data-jpa,發現那種方式真的是太爽了,mybatis的xml的對映配置總覺得有點麻煩。介面定義和對映離散在不同的檔案中,閱讀起來不是很方便。於是,準備使用
資料結構實現 6.4:優先佇列_基於連結串列實現(C++版)
資料結構實現 6.4:優先佇列_基於連結串列實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入隊操作 2.2 出隊操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析
資料結構實現 6.3:優先佇列_基於動態陣列實現(C++版)
資料結構實現 6.3:優先佇列_基於動態陣列實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入隊操作 2.2 出隊操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析
資料結構實現 6.1:二叉堆_基於動態陣列實現(C++版)
資料結構實現 6.1:二叉堆_基於動態陣列實現(C++版) 1. 概念及基本框架 1.1 滿二叉樹 1.2 完全二叉樹 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 查詢操作
資料結構實現 4.2:集合_基於連結串列實現(C++版)
資料結構實現 4.2:集合_基於連結串列實現(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 增加操作 2.2 刪除操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析
SpringMVC之配置(註解版)
//web容器啟動的時候建立物件,呼叫方法來初始化容器以及前端控制器 public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //獲取根容器的配置
策略模式(註解版)實現 retrofit 的get和post請求的公共引數(二)
(想用純策略模式來完全解決 if else if switch case這種需求,是做不到的,或許策略模式根本不能這麼用,最近看到一個開源框架,作者使用策略模式+介面卡模式完美結合,前提是在使用之前要在Application中選擇自己的介面卡,如果兩個介面卡
劍指Spring原始碼(三)俯瞰Spring的Bean的生命週期(大眾版)
距離上一次寫Spring原始碼解析,已經過去了快要好幾個月了,主要原因還是Spring的原始碼解析類文章太難寫了,不像我先前寫的什麼CAS原始碼,AQS原始碼,LinkedBlockingQueue等等,這些無非就是分析幾個核心方法,程式碼也不算太長,就像比較複雜的AQS原始碼也是兩篇搞定的,雖然AQS原始碼
Spring MVC 基於URL的攔截和對映規則
url-pattern 如果看過前一篇入門的帖子,應該瞭解到spring mvc在啟動前必須要在web.xml中配置servlet,這樣才能攔截到想要對映的url地址。 <servlet> <servlet-name>S
SSM搭建-Spring mvc基於註解的配置(13)
Spring2.5引入註解式處理器支援,通過@Controller和@RequestMapping註解定義我們的處理器類。並且提供了一組強大的註解需要通過處理器對映DefaultAnnotationHandlerMapping和處理器介面卡AnnotationMethodHandlerA
知識儲備:Spring中Bean的生命週期(基於註解版)
一:前言 在Spring專案中,通常配置Spring都是使用XML的形式進行配置,配置bean是通過<bean></bean>標籤將bean加入IOC容器中,但在Spring註解版中,可以通過Java程式碼進行配置,即建立一個java類在其類頭上標註@Configurat