RequestMapping注解
一、使用方式以及介紹
1). 源碼
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
...屬性...
}
2). 作用
用于建立請(qǐng)求URL和處理請(qǐng)求方法之間的對(duì)應(yīng)關(guān)系。
3). 標(biāo)注的位置以及意義
1.標(biāo)注在類(lèi)上
請(qǐng)求URL的一級(jí)訪(fǎng)問(wèn)目錄。此處不寫(xiě)的話(huà),就相當(dāng)于應(yīng)用的根目錄。寫(xiě)的話(huà)需要以
/開(kāi)頭;它出現(xiàn)的目的是為了使我們的URL可以按照模塊化管理。
- 比如:用戶(hù)模塊
/user/login/user/unlogin/user/register
2. 標(biāo)注在方法上
請(qǐng)求URL的第二級(jí)訪(fǎng)問(wèn)目錄
4). 屬性詳解
以下四個(gè)屬性的關(guān)系為 與&&
-
value: 用于指定請(qǐng)求的URL。和path屬性一樣 -
method: 用于指定請(qǐng)求的方式:post/get -
params: 用于指定限制請(qǐng)求參數(shù)的條件。支持簡(jiǎn)單的表達(dá)式。要求請(qǐng)求參數(shù)的key和value必須和配置的一模一樣。如下
/*
params = {"username"} 請(qǐng)求參數(shù)必須有username
params = {"money!=100"} 請(qǐng)求參數(shù)中的money不能為100
*/
-
headers: 用于指定限制請(qǐng)求消息頭的條件。
headers = {"token"}表示請(qǐng)求頭里面必須要有token屬性
二、使用案例
1). 【標(biāo)記位置】+【method屬性】+【params屬性】
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/** 控制器 */
@Controller
@RequestMapping(path = "/user", params = {"username"})
public class HelloController {
@RequestMapping(path = "/login", method = RequestMethod.GET)
public String loginOne() {
System.out.println("login One");
return "success";
}
@RequestMapping(path = "/login", method = RequestMethod.POST, params = {"password!=123"})
public String loginTwo() {
System.out.println("login two");
return "success";
}
}
index.jsp中的核心代碼
<h3>入門(mén)案例</h3>
<a href="user/login?username=lc">登錄1</a> <br>
<%-- 當(dāng)我們使用此種方式配置時(shí),不要在訪(fǎng)問(wèn)URL前面加/,否則無(wú)法找到資源 --%>
<form action="${pageContext.request.contextPath}/user/login" method="post">
<input type="text" name="username" value="lc">
<input type="password" name="password">
<input type="submit" value="登錄2">
</form>