1. 程式人生 > >Java註解之@RequestMapping

Java註解之@RequestMapping

Java中註解的型別如下:

Java包含5種常見的註解。

@Target:修改類的方法,型別等;

@Retention:修飾註解的作用時間,比如執行時(source,class,runtime);

@Documented:修飾的註解能夠儲存到JavaDoc中;

@Inherited:簡單理解為:帶有該註解的類可以繼承父類的註解。

2、RequestMapping的學習

@RequestMapping是一個用來處理請求地址對映的註解,使用的範圍是:類或方法。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

主要變數值:Value, name, path, params, headers, consumes, produces, method

下面是原始碼:

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.Callable;

import org.springframework.core.annotation.AliasFor;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

	String name() default "";
	@AliasFor("path")
	String[] value() default {};
	@AliasFor("value")
	String[] path() default {};
	RequestMethod[] method() default {};
	String[] params() default {};
	String[] headers() default {};
	String[] consumes() default {};
	String[] produces() default {};

}

RequestMapping是一個介面,其中定義的方法

1)name:為本次對映指定一個名詞,這個預設的情況是“”。本質就是起名字。

2)Value:請求的路徑的實際地址,比如福利金批次的查詢路徑。

@RequestMapping("/action/act")
@RequestMapping(value = "/function/list",method = RequestMethod.GET)

Value指定的地址可以是URI Template 模式,包含的三種模式:

A) 可以指定為普通的具體值,如上面的value值;

B)  可以指定為含有某變數的一類值(URI Template Patterns with Path Variables)。比如:value="/batch/{varValue}",而varValue可以在後臺程式碼中賦值。

@RequestMapping(value="/funtion/{list}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(list);  
  model.addAttribute("list", owner);  
  return "vaule值"; 
}

C) 可以指定為含正則表示式的一類值( URI Template Patterns with Regular Expressions);

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
  public void handle(@PathVariable String version, @PathVariable String extension) {    
    // ...
  }
}

3)path:

原始碼分析:

	@AliasFor("path")
	String[] value() default {};
	@AliasFor("value")
	String[] path() default {};

從Spring 4.2開始引入了@AliasFor註解,可以實現屬性的別名,如value本身並沒有特定的含義,而path會更加具體,能見名知義,通俗說可以認為兩者在使用中是一樣的如:@RequestMapping("/xiaocui")} 與 @RequestMapping(path="/xiaocui")相同。

4)params:

原始碼解釋:

The parameters of the mapped request, narrowing the primary mapping.

對映請求的引數,收窄請求範圍。可以限制客戶端傳送到伺服器的請求引數為某些特定值或不為某些值。

直譯:就是允許某些值為引數,且其值滿足的條件

//請求的引數必須包含id=215與name不等於xiaocui
@RequestMapping(value = "/paramsTest",params = {"id=215","name!=xiaocui"})

5)headers:

指定請求的屬性中必須包含某些特定的headers值。請求的頭部,作用域稍微大一些的。

//請求頭部資訊中必須包含Host=localhost:8088
@RequestMapping(value = "/headersTest",headers = "Host=localhost:8088")

在上述請求過程中,引數必須包含headers,且值為host和port的指定值。另外,在新增引數是,使用的是物件的addAttribute()方法。

6)consumes:(暫定)

指定處理請求的提交內容型別(Content-Type),例如application/json, text/html,收窄請求範圍,如果使用者傳送的請求內容型別不匹配則方法不會響應請求。

//請求內容型別必須為text/html,注意瀏覽器預設沒有指定Content-type
@RequestMapping(value = "/consumesTest",consumes = "text/html")

7)produces:(暫定)

指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回,方法才處理客戶端的請求否則會報406錯誤。

//客戶端接收json且編碼為utf-8,多數瀏覽器Accept設定的為*/*,接收任意型別
@RequestMapping(value = "/producesTest",produces="application/json; charset=UTF-8")

8)method:

指定請求的method型別,包含:GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE。

呼叫的RequestMethod列舉類,原始碼:

public enum RequestMethod {

	GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE

}

3、總結

1)@RequestMapping:用於處理請求地址對映的註解。

2)屬性記憶表格:

屬性

屬性

name

註解名

headers

請求頭部

value

路徑

consumes

提交內容型別

path

Value別名

produces

返回內容型別

params

條件引數

method

方法型別

相關推薦

Java註解@RequestMapping

Java中註解的型別如下:Java包含5種常見的註解。@Target:修改類的方法,型別等;@Retention:修飾註解的作用時間,比如執行時(source,class,runtime);@Documented:修飾的註解能夠儲存到JavaDoc中;@Inherited:簡

Java註解Retention、Documented、Target介紹

javadoc 聲明 示例 class 文件 con dash tor 描述 先看代碼,後面一個個來解析: @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.METHOD, Elemen

java註解編譯時註解RetentionPolicy.CLASS 基本用法

1 前言 我們知道,在日常開發中我們常用的兩種註解是執行時註解和編譯時註解,執行時註解是通過反射來實現註解處理器的,對效能稍微有一點損耗,而編譯時註解是在程式編譯期間生成相應的代理類,替我們完成某些功能。今天我們來講解一下編譯時註解以及寫一個小例子,以便加深對編譯時註解的理解。

Java註解 @Target、@Retention、@Documented簡介

Java註解之 @Target、@Retention、@Documented簡介 ========================= [email protected]可以實現三種功能: (1)宣告類:Class (2)宣告類別:Category (3)宣告擴充套件:E

深入JAVA註解屬性註解

專案目錄結構 實體類: 1 package org.guangsoft.annotation.entity; 2 3 import java.lang.annotation.ElementType; 4 import java.lang.annotation.Retention;

Java註解Retention、Documented、Inherited介紹

Retention註解 Retention(保留)註解說明,這種型別的註解會被保留到那個階段. 有三個值: 1.RetentionPolicy.SOURCE —— 這種型別的Annotations只在原始碼級別保留,編譯時就會被忽略 2.RetentionPolicy.

Java註解@RequestParam

上節內容回顧:1、針對@RequestMapping的學習,需要了解它的使用位置和功能,包含的方法。位置用於類或方法之上,提供訪問路徑及引數的設定。另外包含的引數和方法有8中,name, value , path ,produces, consumes, method , h

Spring MVC中常用註解RequestMapping詳解

SpringMVC和Struts2最大區別可能就是註解的使用。因為SpringMVC中可以實現在類這個層面上面配置資訊,也可以在方法層面上面配置資訊,既靈活又方便,不需要寫大量的配置檔案,也不需要寫大

Java 系列spring學習--springmvc註解方式(五)

internal fault .org blank port imp handle scan html 一、springmvc註解方式   註解方式使用的更多,更加靈活。在上一篇的博客的基礎上修改springmvc-servlet.xml配置文件。 <?xml ve

【面試加分項】java自己定義註解解析註解

有一個 構造 ace catch .get doc 做的 document field 我之前的博客中說明過自己定義註解的聲明今天我們來看看怎樣對我們自己定義的註解進

Java 基礎--註解Annotation詳解

註解 java 基礎 time span face 自定義註解 div ace rtu 自定義註解入門: public @interface Annotation01 { //set default value ""; String value() de

Java自定義註解註解(meta-annotation)Target、Retention、Documented、Inherited介紹

元註解:   元註解的作用就是負責註解其他(如:自定義)註解,用來對其它 annotation型別作說明。Java定義了4個標準的meta-annotation型別:    [email protected]    [email protected

java基礎--註解(一)

       最近學習spring5的時候,發現好像多了一些新的註解,於是乎想好好看看這些註解到底是怎麼實現的,但是奈何自己連基礎的元註解都還是一知半解,所以還是萬丈高樓平地起,一切以基礎為重。下面就來說說jdk自帶的元註解,與新手朋友們分享也為自己填一個坑。 1.什麼是元

Java基礎《@Transactional註解需注意事項》

@Transactional註解預設值 String value() default ""; Propagation propagation() default Propagation.REQUIRED; Isolation isolation() default Isola

SpringMVC@RequestMapping註解

RequestMapping:org.springframework.web.bind.annotation.RequestMapping RequestMapping註解型別用來指示Spring用哪一個類或方法來處理請求動作,該註解可用於類或方法 @RequestMap

Android進階——Java註解實戰APT構建模組化的第一步

前言 APT的學習要花點時間去掌握和實踐的,短時間內只能掌握知識點,更多的是在實戰中去實踐。其實,APT就是一種工具而已,只要用多了,自然就會熟練了,不過要想實踐之前,還是必須把基礎知識學好才能實戰進入開發。文章會從基礎用例講解知識點,然後再通過實戰進行實踐 APT簡介 AP

java基礎-自定義註解

(分類資訊來自百度搜索) 執行機制分類: 源註解 程式碼中註解編譯後class中沒有 編譯時註解 再class中存在的 執行時註解 執行時起作用的註解 按來源分 JDK自帶註解 三方註解 最常見 自定義註解 元註解 註解的註解 今天來看看J

Java開發@PostConstruct和@PreConstruct註解

     從Java EE5規範開始,Servlet增加了兩個影響Servlet生命週期的註解(Annotation):@PostConstruct和@PreDestroy。這兩個註解被用來修飾一個非靜態的void()方法.而且這個方法不能有丟擲異常宣告。 使用方式

Java程式設計反射中的註解詳解

“註解”這個詞,可謂是在Java程式設計中出鏡率比較高,而且也是一個老生常談的話題。我們之前在聊Spring相關的東西時,註解是無處不在,之前我們簡單的聊過一些“註解”的相關內容,比如在Spring中是如何進行“註解”組合的。因為註解在Java程式設計中還是比較重要的,所以我們今天的部落格就把註解的東西給系統

SpringMVCRequestMapping註解

通過@RequestMapping註解可以定義不同的處理器對映規則 一、方法URL路徑對映 @RequestMapping(value="item")或@RequestMapping("/item") value的值是陣列,可以將多個url對映到同一個方法  當只