SpringMvc獲取頁(yè)面中的參數(shù)方法詳解
一、設(shè)置HttpServletRequest request獲取
index頁(yè)面通過(guò)form標(biāo)簽傳入?yún)?shù)代碼
<form th:action="@{/test/params/servletAPI}" method="get">
用戶名;<input type="text" name="username"><br>
密碼;<input type="password" name="password"><br>
<input type="submit" value="提交"><br>
</form>
控制層代碼
只需要在控制器方法的形參位置設(shè)置HttpServletRequest request參數(shù) *就可以在控制器方法中使用request對(duì)象獲取請(qǐng)求參數(shù)
注意這里我們的類并沒(méi)有繼承HttpServletRequest,但是我們只需要設(shè)置參數(shù)就可以使用它了
這是因?yàn)?,我們?cè)趙eb.xml文件初始化的時(shí)候就會(huì)將我們的類交給DispatcherServlet管理, 這樣在主頁(yè)面中調(diào)用方法時(shí)我們DispatcherServlet底層時(shí)封裝的serclet
所以我們只需要輸入?yún)?shù)HttpServletRequest request 就可以自動(dòng)獲得一個(gè)servlet對(duì)象 (但是從這里我們也可以看出,我們并不會(huì)經(jīng)常使用這種方式獲取參數(shù),因?yàn)榧热籇ispatcherServlet為我們封裝了servlet、 那我們沒(méi)必要使用原生的servlet方法)
@Controller
public class GetparamController {
@RequestMapping("/test/params/servletAPI")
public String GetParams1(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username="+username+" password="+password);
return "success";
}
二、將請(qǐng)求參數(shù)和控制器方法的形參綁定
index頁(yè)面通過(guò)form標(biāo)簽傳入?yún)?shù)代碼
<form th:action="@{/test/params1}" method="get">
用戶名;<input type="text" name="username"><br>
密碼;<input type="password" name="password"><br>
<input type="submit" value="提交"><br>
</form>
控制層代碼
- @RequestParam注解的三個(gè)屬性;value,required,defaultvalue
- value;設(shè)置和形參綁定的請(qǐng)求參數(shù)的名字
- required;設(shè)置是否必須傳輸value所對(duì)應(yīng)的請(qǐng)求參數(shù)
- 默認(rèn)值為ture,表示value所對(duì)應(yīng)的請(qǐng)求參數(shù)必須傳輸,否則頁(yè)面報(bào)錯(cuò);400
- 若設(shè)置為false,則表示value所對(duì)應(yīng)的請(qǐng)求參數(shù)不是必須傳輸,若未傳輸,則形參值為null
- defaultvalue;設(shè)置當(dāng)沒(méi)有傳輸value所對(duì)應(yīng)的請(qǐng)求參數(shù)時(shí),為形參設(shè)置默認(rèn)值,此時(shí)和required屬性無(wú)關(guān)
@RequestMapping("/test/params1")
public String GetParams2(
//required =true;這里表示必須傳入?yún)?shù)username
//value = "username" 將username的值賦值給 String name
//defaultValue = "home";如果傳入了username沒(méi)有賦值則給他默認(rèn)值home,若有值則不管
@RequestParam(value = "username",required =true,defaultValue = "home")String name, String password){
System.out.println("username="+name+" password="+password);
return "success";
}
三、通過(guò)實(shí)體類類型的參數(shù)獲取
index頁(yè)面通過(guò)form標(biāo)簽傳入?yún)?shù)代碼
<form th:action="@{/test/params/pojo}" method="post">
用戶名;<input type="text" name="username"><br>
密碼;<input type="password" name="password"><br>
<input type="submit" value="提交"><br>
</form>
創(chuàng)建User實(shí)體類,并且類中的屬性和請(qǐng)求參數(shù)的名字一一對(duì)應(yīng)
public class User {
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
控制層代碼
需要在控制器方法的形參位置設(shè)置實(shí)體類類型的形參,要保證實(shí)體類中的屬性的屬性名和請(qǐng)求參數(shù)的名字一一對(duì)應(yīng) 可以通過(guò)實(shí)體類類型的形參獲取請(qǐng)求參數(shù)
@RequestMapping("/test/params/pojo")
public String GetParams2(User user){
System.out.println(user);
return "success";
}
}
四、@RequestHeader,@CookieValue
- @RequestHeader;將請(qǐng)求頭和控制器方法的形參綁定(用法和,@RequestParam一樣)
- @CookieValue;將cookie數(shù)據(jù)和控制器方法的形參綁定(用法和,@RequestParam一樣)
到此這篇關(guān)于SpringMvc獲取頁(yè)面中的參數(shù)方法詳解的文章就介紹到這了,更多相關(guān)SpringMvc獲取頁(yè)面參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot異步線程間數(shù)據(jù)傳遞的四種方式
這篇文章主要為大家介紹了Spring?Boot異步線程間數(shù)據(jù)傳遞的四種方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
SpringBoot安全策略開(kāi)發(fā)之集成數(shù)據(jù)傳輸加密
這篇文章主要介紹了SpringBoot集成數(shù)據(jù)傳輸加密,近期在對(duì)開(kāi)發(fā)框架安全策略方面進(jìn)行升級(jí)優(yōu)化,提供一些通用場(chǎng)景的解決方案,本文針對(duì)前后端數(shù)據(jù)傳輸加密進(jìn)行簡(jiǎn)單的分享2023-01-01
springboot 整合EhCache實(shí)現(xiàn)單服務(wù)緩存的操作方法
這篇文章主要介紹了springboot 整合EhCache實(shí)現(xiàn)單服務(wù)緩存的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Spring Security攔截器引起Java CORS跨域失敗的問(wèn)題及解決
這篇文章主要介紹了Spring Security攔截器引起Java CORS跨域失敗的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java反射之通過(guò)反射了解集合泛型的本質(zhì)(詳解)
下面小編就為大家?guī)?lái)一篇java反射之通過(guò)反射了解集合泛型的本質(zhì)(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
SpringBoot創(chuàng)建Docker鏡像的方法步驟
這篇文章主要介紹了SpringBoot創(chuàng)建Docker鏡像的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

