關(guān)于@RequestParam注解的使用(簡單易懂)
@RequestParam注解使用
1、作用
@RequestParam:將請求參數(shù)綁定到你控制器的方法參數(shù)上(是springmvc中接收普通參數(shù)的注解)
2、語法
語法:@RequestParam(value=”參數(shù)名”,required=”true/false”,defaultValue=””)
value
:參數(shù)名required
:是否包含該參數(shù),默認為true,表示該請求路徑中必須包含該參數(shù),如果不包含就報錯。defaultValue
:默認參數(shù)值,如果設(shè)置了該值,required=true將失效,自動為false,如果沒有傳該參數(shù),就使用默認值
3、測試環(huán)境
環(huán)境:jdk1.8 Tomcat8.5 idea2018 manven父工程子模塊
步驟:
1、創(chuàng)建web工程、引入依賴
2、配置SpringMvc入口文件 --DispatcherServlet--為總調(diào)度、web.xml里配置
3、創(chuàng)建Springmvc.xml文件--理解為:適配器(這里不需要自已指定適配、springmvc會自動指定)--視圖解析器
4、創(chuàng)建 業(yè)務(wù)處理器 Controller類
5、測試
4、工程結(jié)構(gòu)
步驟1、2、3、參考:SpringMvc入門案例
5、業(yè)務(wù)處理器HelloController.java
package com.day01springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; /** * @ Author :ShaoWei Sun. * @ Date :Created in 20:58 2018/11/16 */ @Controller @RequestMapping("hello") public class HelloController2 { /** * 接收普通請求參數(shù) * http://localhost:8080/hello/show16?name=linuxsir * url參數(shù)中的name必須要和@RequestParam("name")一致 * @return */ @RequestMapping("show16") public ModelAndView test16(@RequestParam("name")String name){ ModelAndView mv = new ModelAndView(); mv.setViewName("hello2"); mv.addObject("msg", "接收普通的請求參數(shù):" + name); return mv; } /** * 接收普通請求參數(shù) * http://localhost:8080/hello/show17 * url中沒有name參數(shù)不會報錯、有就顯示出來 * @return */ @RequestMapping("show17") public ModelAndView test17(@RequestParam(value="name",required=false)String name){ ModelAndView mv = new ModelAndView(); mv.setViewName("hello2"); mv.addObject("msg", "接收普通請求參數(shù):" + name); return mv; } /** * 接收普通請求參數(shù) * http://localhost:8080/hello/show18?name=998 顯示為998 * http://localhost:8080/hello/show18?name 顯示為hello * @return */ @RequestMapping("show18") public ModelAndView test18(@RequestParam(value="name",required=true,defaultValue="hello")String name){ ModelAndView mv = new ModelAndView(); mv.setViewName("hello2"); mv.addObject("msg", "接收普通請求參數(shù):" + name); return mv; } }
6、測試
@RequestParam與@Param區(qū)別
@RequestParam 用于controller層,是Spring的注解
解決前臺參數(shù)名稱與后臺接收參數(shù)變量名稱不一致的問題,等價于request.getParam
value
:參數(shù)名字,即入?yún)⒌恼埱髤?shù)名字,如username表示請求的參數(shù)區(qū)中的name為username的參數(shù)的值將傳入;required
:是否必須,默認是true,表示請求中一定要有相應(yīng)的參數(shù),否則將報404錯誤碼;defaultValue
:默認值,表示如果請求中沒有同名參數(shù)時的默認值,默認值可以是SpEL表達式,如“#{systemProperties['java.vm.version']}”。
? ? @ResponseBody ? ? @RequestMapping("login") ? ? public String login(@RequestParam(value = "username") final String username, ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam(value = "password",required = false) final String password, ? ? ? ? ? ? ? ? ? ? ? ? @RequestParam(value = "valcode",required = false) final String valcode) { ? ? ? ? ? ? ? ? ? ? ? ? } ? ?
**@Param** 用于dao層,是mybatis中的注解
使得mapper.xml中的參數(shù)與后臺的參數(shù)對應(yīng)上,也增強了可讀性
如果兩者參數(shù)名一致得話,spring會自動進行封裝,不一致的時候就需要手動去使其對應(yīng)上。
即:用注解來簡化xml配置的時候,@Param注解的作用是給參數(shù)命名,參數(shù)命名后就能根據(jù)名字得到參數(shù)值,正確的將參數(shù)傳入sql語句中 。
public interface Mapper {?? ? @Select("select s_id id,s_name name,class_id classid"+? ? ? ? ? "from student where ?s_name= #{aaaa} and class_id = #{bbbb}")? ?public Student select(@Param("aaaa") String name,@Param("bbbb")int class_id); ? ? ? @Delete......?? ? ? ? @Insert......?? ?? }?
在dao層,用來給參數(shù)命名,在Mybatis的mapper中加上該注解,傳遞的參數(shù)與Sql中的字段名一致
?List<Employee> getAllEmployeeByPage(@Param("page") Integer page,? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Param("size") Integer size);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中JSON字符串進行各種轉(zhuǎn)換的方法小結(jié)
Gson和Hutool的JSONUtil都是常用的用于處理JSON數(shù)據(jù)的工具庫,它們提供了簡單易用的API來進行JSON字符串的解析、轉(zhuǎn)換和操作,下面就跟隨小編一起學(xué)習(xí)一下如果使用他們實現(xiàn)JSON字符串的各種轉(zhuǎn)換吧2024-01-01Java的BigDecimal在math包中提供的API類場景使用詳解
這篇文章主要介紹了Java的BigDecimal在math包中提供的API類場景使用詳解,BigDecimal,用來對超過16位有效位的數(shù)進行精確的運算,雙精度浮點型變量double可以處理16位有效數(shù),在實際應(yīng)用中,需要對更大或者更小的數(shù)進行運算和處理,需要的朋友可以參考下2023-12-12java springboot郵箱找回密碼功能的實現(xiàn)講解
這篇文章主要介紹了java springboot郵箱找回密碼功能的實現(xiàn)講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01Javas使用Redlock實現(xiàn)分布式鎖過程解析
這篇文章主要介紹了Javas使用Redlock實現(xiàn)分布式鎖過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08