<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
大家好,我是捲心菜,大二學生一枚。
大家在學習springMVC框架的時候,一定學習過使用這個框架來獲取請求的引數,那麼各位小夥伴們,獲取請求引數有幾種方法呢?使用哪種方式最好呢?在什麼時候使用這些方法呢?那麼這一篇文章,我就帶大家來看一看這些問題的答案。
廢話不多說,滿滿的乾貨,趕快來看看吧~
那麼什麼是請求引數呢?
可以直接在請求地址中給於請求引數的值
還可以以表單提交的方式,例如:
<form> 使用者名稱:<input type="text" name="username"/><br/> 密碼:<input type="password" name="password"/><br/> 愛好:<input type="checkbox" name="hobby" value="C++"/>C++ <input type="checkbox" name="hobby" value="Java"/>Java <input type="checkbox" name="hobby" value="C"/>C<br/> <button type="submit">提交</button> </form>
表單就是這樣:
HttpServletRequest是我們在javaweb學習中學到的,它也可以用在我們springMVC框架中,將HttpServletRequest作為控制器方法的形參,此時HttpServletRequest型別的參數列示封裝了當前請求的請求報文的物件
具體程式碼如下:
@RequestMapping("/one") public String testParam(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); String[] hobbies = request.getParameterValues("hobby"); return "success"; }
當我們在表單中設定正確的請求地址後,提交表單時,就會呼叫該方法,然後根據表單的name屬性值獲取相應的引數值。相信大家可以看到,getParameter是獲取單個屬性的值,getParameterValues是獲取多個屬性的值。
接下來介紹第二種方法。
在控制器方法的形參位置,設定和請求引數同名的形參,當瀏覽器傳送請求,匹配到請求對映時,在DispatcherServlet中就會將請求引數賦值給相應的形參
具體程式碼如下:
@RequestMapping("/two") public String testTwo(String username, String password, String hobby) { System.out.println("username:" + username + ",password:" + password + ",hobby:" + hobby); return "success"; }
當然,也可以寫成這樣:
@RequestMapping("/two") public String testTwo(String username, String password, String[] hobby) { System.out.println("username:" + username + ",password:" + password + ",hobby:" + hobby); return "success"; }
這兩種都可以,第一種會把多個引數的值轉換成一個陣列;第二組會把引數值放進陣列中,需要自己遍歷得到結果。
推薦使用這種方式,非常好用。
@RequestParam是將請求引數和控制器方法的形參建立對映關係
@RequestMapping("/three") public String testThree(@RequestParam(value = "username", required = false, defaultValue = "hello") String username, @RequestParam(value = "password") String password, @RequestParam(value = "hobby") String hobby) { System.out.println("username:" + username + ",password:" + password + ",hobby:" + hobby); return "success"; }
@RequestParam註解一共有三個屬性:
若設定為true時,則當前請求必須傳輸value所指定的請求引數,若沒有傳輸該請求引數,且沒有設定defaultValue屬性,則頁面報錯400:Required
String parameter ‘xxx’ is not present;若設定為false,則當前請求不是必須傳輸value所指定的請求引數,若沒有傳輸,則註解所標識的形參的值為null
執行結果完全正確:
最後一種方式,可以在控制器方法的形參位置設定一個實體類型別的形參,此時若瀏覽器傳輸的請求引數的引數名和實體類中的屬性名一致,那麼請求引數就會為此屬性賦值
下面看程式碼:
public class User { private String username; private String password; private String[] hobby; }
這個user實體類的getter和setter以及toString就不列出來了
@RequestMapping("/four") public String testFour(User user) { System.out.println(user); return "success"; }
測試一下:
提交後執行結果也是完全正確的:
樂莫樂兮新相知,很高興各位小夥伴可以堅持看完這篇文章。以上四種方式獲取請求引數就介紹完了,大家可以根據自己的需要選擇合適的方式哦~
到此這篇關於springMVC獲取請求引數的幾種方式的文章就介紹到這了,更多相關springMVC獲取請求引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45