關(guān)于RequestMapping注解的作用說明
@RequestMapping注解的作用
@RequestMapping 是 Spring Web 應(yīng)用程序中最常被用到的注解之一。這個(gè)注解會將 HTTP 請求映射到 MVC 和 REST 控制器的處理方法上。并且一個(gè)處理請求地址映射的注解,可用在類或方法上。用于類上,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。
以下為@RequestMapping的源碼
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 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 {};
}
方法上:
請求 URL 的第二級訪問目錄。
屬性:
value:用于指定請求的 URL。它和 path 屬性的作用是一樣的。method:用于指定請求的方式。params:用于指定限制請求參數(shù)的條件。它支持簡單的表達(dá)式。要求請求參數(shù)的 key 和 value 必須和 配置的一模一樣。
例如:
params = {“accountName”},表示請求參數(shù)必須有accountNameparams = {“moeny!100”},表示請求參數(shù)中 money 不能是 100。headers:用于指定限制請求消息頭的條件。
注意:
以上四個(gè)屬性只要出現(xiàn) 2 個(gè)或以上時(shí),他們的關(guān)系是與的關(guān)系。
作用:
用于建立請求URL和處理請求方法之間的對應(yīng)關(guān)系。
出現(xiàn)位置:
請求 URL 的第一級訪問目錄。此處不寫的話,就相當(dāng)于應(yīng)用的根目錄。寫的話需要以/開頭。 它出現(xiàn)的目的是為了使我們的 URL 可以按照模塊化管理:
例如:
賬戶模塊:
- /account/add
- /account/update
- /account/delete …
訂單模塊:
- /order/add
- /order/update
- /order/delete
案例
普通案例: 將@RequestMapping注解分別注釋在類和方法上,所以在前端寫鏈接的時(shí)候要寫完全的路徑(類上標(biāo)簽的路徑+方法標(biāo)簽上的路勁)
控制器的代碼塊:
/**
* RequestMapping 注解出現(xiàn)的位置
* @author
* @Company http://www.ithiema.com
* @Version 1.0
*/
@Controller("accountController")
@RequestMapping("/account")
public class AccountController {
@RequestMapping("/findAccount")
public String findAccount() {
System.out.println("查詢了賬戶。。。。");
return "success";
}
}
JSP中的代碼塊
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>requestmapping 的使用</title>
</head>
<body>
<!-- 第一種訪問方式 -->
<a href="${pageContext.request.contextPath}/account/findAccount" rel="external nofollow" >
查詢賬戶
</a>
<!-- 第二種訪問方式 -->
<a href="account/findAccount" rel="external nofollow" >查詢賬戶</a>
</body>
</html>
案例: 用于指定請求的方式,如果要求是get請求,那么在前端寫請求方式時(shí)的method=get,反之如果要求是post請求,前端的,medthod=post
控制器代碼塊:
/**
* 保存賬戶
* @return
*/
@RequestMapping(value="/saveAccount",method=RequestMethod.POST)
public String saveAccount() {
System.out.println("保存了賬戶");
return "success";
}
jsp代碼塊
<a href="account/saveAccount" rel="external nofollow" >保存賬戶,get 請求</a> <form action="account/saveAccount" method="post"> <input type="submit" value="保存賬戶,post 請求"> </form>
注意: 當(dāng)使用 get 請求時(shí),提示錯(cuò)誤信息是 405,信息是方法不支持 get 方式請求

params 屬性的示例: 用于指定限制請求參數(shù)的條件。它支持簡單的表達(dá)式。要求請求參數(shù)的 key 和 value 必須和 配置的一模一樣。 寫了這個(gè)屬性之后就一定要在前端發(fā)送請求的時(shí)候,前端就要有這個(gè)屬性,否則就無法訪問??刂破鞔a塊:
/**
* 刪除賬戶
* @return
*/
@RequestMapping(value="/removeAccount",params= {"accountName","money>100"})
public String removeAccount() {
System.out.println("刪除了賬戶");
return "success";
}
jsp代碼塊:
<a href="account/removeAccount?accountName=aaa&money>100" rel="external nofollow" >刪除賬戶,金額 100</a> <a href="account/removeAccount?accountName=aaa&money>150" rel="external nofollow" >刪除賬戶,金額 150</a>
注意:
當(dāng)我們點(diǎn)擊第一個(gè)超鏈接時(shí),可以訪問成功。
當(dāng)我們點(diǎn)擊第二個(gè)超鏈接時(shí),無法訪問。
如下圖:

支持REST風(fēng)格的參數(shù): 代表性狀態(tài)傳輸 (REST) 是一種用于分布式超媒體系統(tǒng)(如萬維網(wǎng))的體系結(jié)構(gòu)樣式。 (以下測試代碼與@PathVariable聯(lián)用)
控制器代碼塊:
@RequestMapping(value = "/testRequestMapping/{Id}")
public String testRequestMapping(@PathVariable String Id){
System.out.println("testRequestMapping執(zhí)行了"+Id);
return "success";
}
jsp前端代碼塊
<a href="account/testRequestMapping/21" rel="external nofollow" >@RequestMapping測試</a>
@RequestMapping注解的六個(gè)屬性詳解
RequestMapping是一個(gè)用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。
RequestMapping注解有六個(gè)屬性
下面分成三類進(jìn)行說明
value, method
value:指定請求的實(shí)際地址,指定的地址可以是具體地址、可以RestFul動態(tài)獲取、也可以使用正則設(shè)置;method:指定請求的method類型, 分為GET、POST、PUT、DELETE等;
consumes,produces
consumes:指定處理請求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;produces:指定返回的內(nèi)容類型,僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回;
params,headers
params:指定request中必須包含某些參數(shù)值是,才讓該方法處理。headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java如何實(shí)現(xiàn)通過證書訪問Https請求
這篇文章主要介紹了Java如何實(shí)現(xiàn)通過證書訪問Https請求,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Java8(291)之后禁用了TLS1.1使JDBC無法用SSL連接SqlServer2008的解決方法
這篇文章主要介紹了Java8(291)之后禁用了TLS1.1使JDBC無法用SSL連接SqlServer2008的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
Java通過數(shù)據(jù)庫表生成實(shí)體類詳細(xì)過程
這篇文章主要介紹了Java通過數(shù)據(jù)庫表生成實(shí)體類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02
防止未登錄用戶操作—基于struts2攔截器的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄乐刮吹卿浻脩舨僮鳌趕truts2攔截器的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a
這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Java面試題沖刺第十二天--數(shù)據(jù)庫(2)
這篇文章主要為大家分享了最有價(jià)值的三道數(shù)據(jù)庫面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-07-07
springboot整合SSE技術(shù)開發(fā)小結(jié)

