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)文章
Java之通過(guò)OutputStream寫入文件與文件復(fù)制問(wèn)題
這篇文章主要介紹了Java之通過(guò)OutputStream寫入文件與文件復(fù)制問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
maven項(xiàng)目打包如何去掉不需要的module
文章總結(jié):在my-project工程依賴my-core和my-common,且my-project在總工程AAA中時(shí),建議通過(guò)以下兩種方案優(yōu)化打包流程:1.?使用pom區(qū)分,重新編寫pom文件,并指定需要重新編譯的工程到modules中,然后在編譯時(shí)指定pom文件;2024-12-12
SpringBoot中使用JWT的實(shí)戰(zhàn)
本文主要介紹了SpringBoot中使用JWT的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
解決 java: 程序包c(diǎn)om.baomidou.mybatisplus.annotation不存在
在使用Java編寫程序時(shí),經(jīng)常會(huì)遇到各種編譯錯(cuò)誤或運(yùn)行時(shí)異常,本文主要介紹了解決java:程序包c(diǎn)om.baomidou.mybatisplus.annotation不存在,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Java Swing JSlider滑塊的實(shí)現(xiàn)示例
這篇文章主要介紹了Java Swing JSlider滑塊的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Java實(shí)現(xiàn)終止線程池中正在運(yùn)行的定時(shí)任務(wù)
本篇文章給大家分享了JAVA中實(shí)現(xiàn)終止線程池中正在運(yùn)行的定時(shí)任務(wù)的具體步驟和方法,有需要的朋友跟著學(xué)習(xí)下。2018-05-05
Java并發(fā)系列之ReentrantLock源碼分析
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之ReentrantLock源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Java微服務(wù)Filter過(guò)濾器集成Sentinel實(shí)現(xiàn)網(wǎng)關(guān)限流過(guò)程詳解
這篇文章主要介紹了Java微服務(wù)Filter過(guò)濾器集成Sentinel實(shí)現(xiàn)網(wǎng)關(guān)限流過(guò)程,首先Sentinel規(guī)則的存儲(chǔ)默認(rèn)是存儲(chǔ)在內(nèi)存的,應(yīng)用重啟之后規(guī)則會(huì)丟失。因此我們通過(guò)配置中心Nacos保存規(guī)則,然后通過(guò)定時(shí)拉取Nacos數(shù)據(jù)來(lái)獲取規(guī)則配置,可以做到動(dòng)態(tài)實(shí)時(shí)的刷新規(guī)則2023-02-02

