關於@RequestParam註解的使用(簡單易懂)
@RequestParam註解使用
1、作用
@RequestParam:將請求參數綁定到你控制器的方法參數上(是springmvc中接收普通參數的註解)
2、語法
語法:@RequestParam(value=”參數名”,required=”true/false”,defaultValue=””)
value
:參數名required
:是否包含該參數,默認為true,表示該請求路徑中必須包含該參數,如果不包含就報錯。defaultValue
:默認參數值,如果設置瞭該值,required=true將失效,自動為false,如果沒有傳該參數,就使用默認值
3、測試環境
環境:jdk1.8 Tomcat8.5 idea2018 manven父工程子模塊
步驟:
1、創建web工程、引入依賴
2、配置SpringMvc入口文件 –DispatcherServlet–為總調度、web.xml裡配置
3、創建Springmvc.xml文件–理解為:適配器(這裡不需要自已指定適配、springmvc會自動指定)–視圖解析器
4、創建 業務處理器 Controller類
5、測試
4、工程結構
步驟1、2、3、參考:SpringMvc入門案例
5、業務處理器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 { /** * 接收普通請求參數 * http://localhost:8080/hello/show16?name=linuxsir * url參數中的name必須要和@RequestParam("name")一致 * @return */ @RequestMapping("show16") public ModelAndView test16(@RequestParam("name")String name){ ModelAndView mv = new ModelAndView(); mv.setViewName("hello2"); mv.addObject("msg", "接收普通的請求參數:" + name); return mv; } /** * 接收普通請求參數 * http://localhost:8080/hello/show17 * url中沒有name參數不會報錯、有就顯示出來 * @return */ @RequestMapping("show17") public ModelAndView test17(@RequestParam(value="name",required=false)String name){ ModelAndView mv = new ModelAndView(); mv.setViewName("hello2"); mv.addObject("msg", "接收普通請求參數:" + name); return mv; } /** * 接收普通請求參數 * 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", "接收普通請求參數:" + name); return mv; } }
6、測試
@RequestParam與@Param區別
@RequestParam 用於controller層,是Spring的註解
解決前臺參數名稱與後臺接收參數變量名稱不一致的問題,等價於request.getParam
value
:參數名字,即入參的請求參數名字,如username表示請求的參數區中的name為username的參數的值將傳入;required
:是否必須,默認是true,表示請求中一定要有相應的參數,否則將報404錯誤碼;defaultValue
:默認值,表示如果請求中沒有同名參數時的默認值,默認值可以是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中的參數與後臺的參數對應上,也增強瞭可讀性
如果兩者參數名一致得話,spring會自動進行封裝,不一致的時候就需要手動去使其對應上。
即:用註解來簡化xml配置的時候,@Param註解的作用是給參數命名,參數命名後就能根據名字得到參數值,正確的將參數傳入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層,用來給參數命名,在Mybatis的mapper中加上該註解,傳遞的參數與Sql中的字段名一致
List<Employee> getAllEmployeeByPage(@Param("page") Integer page, @Param("size") Integer size);
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 聊聊@RequestParam,@PathParam,@PathVariable等註解的區別
- SpringBoot多種場景傳參模式
- 淺談@RequestParam 參數是否必須傳的問題
- SpringMVC數據頁響應ModelAndView實現頁面跳轉
- Spring MVC如何使用@RequestParam註解獲取參數