關於@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。

推薦閱讀: