SpringBoot 獲取前端頁面參數的集中方式總結


SpringBoot的一個好處就是通過注解可以輕松獲取前端頁面的參數,之后尅將參數經過一系列處理傳送到后台數據庫,前端時間正好用到。大致分為一下幾種:

1.指定前端URL請求參數名稱與方法名稱一致,這種方式簡單來說就是URL請求格式中參數需要與方法的參數名稱對應上,舉個例子,這么一個URL請求:http://localhost:8080/0919/test1?name = xxx & pwd = yyy 在指定的控制器類上加上Controller 注解,同時指定RequestMapping注解即可,當請求路徑參數與方法參數匹配上時會自動注入。

1
2
3
4
5
6
7
8
@RequestMapping ( "/test1" )
@ResponseBody
public  String test1( String name, String pwd )
{
     String s1 = name;
     String s2 = pwd;
     String s1 + s2;  
}

  

啟動主程序,訪問瀏覽器出現下圖,表明注入參數成功:

1
xxxyyy

  

2.第二種方式是通過HttpServletRequest來獲取前端頁面參數,代碼如下。簡單來說就是通過調動Request的getParameter方法來獲取參數,比如訪問路徑類似這樣:http://localhost:8080/0919/test2?firstName = zhang & lastName = san

1
2
3
4
5
6
7
8
@RequstMapping ( "/test2" )
@ResponseBody
public  String test2( HttpServletRequest request )
{
      String firstName = request.getParamenter( "firstName" );
      String lastName = request.getParameter( "lastName" );
      return  firstName = lastName;  
}

  

啟動主程序,訪問瀏覽器出現如下結果,表明注入成功,這種方式也可以表單參數,一般get和post請求都可以

1
zhangsan

  

3.第三種方式是通過創建一個JavaBean對象來封裝表單參數或者是請求URL路徑中參數,具體代碼如下

1
2
3
4
5
6
7
8
@RequestMapping ( "/test3" )
@ResponseBody
public  String test3( Student student )
{
    String firstName = student.getFirstName();
    String lastName = student.getLastName();
     return  firstName = lastName;  
}

  

對應的JavaBean對象如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public  class  Student
{
     private  String firstName;
     private  String lastName;
     
     public  Student()
     {
         super ();
     }
     
     public  String getFirstName()
     {
         return  firstName;
     }
     
     public  void  setFirstName( String firstName )
     {
         this .firstName = firstName;
     }
     
     public  String getLastName()
     {
         return  lastName;
     }
     
     public  void  setLastName( String lastName )
     {
         this .lastName = lastName;
     }
}

  

簡單來說就是將表單參數作為一個JavaBean類的屬性,通過設置方法參數為一個JavaBean對象,之后在方法中通過調用對象的get方法來獲取表單傳過來的參數,比如訪問路徑是:http://localhost:8080/0919/test3?firstName = zhang & lastName = san 啟動主程序,出現如下結果,表明參數注入成功,這種方式如果請求的表單參數很多,可以考慮使用這種方式。

1
zhangsan

  

4.第四種方式是通過PathVariable注解來綁定請求路徑的參數,參考代碼如下

1
2
3
4
5
6
@RequestMapping ( value =  "/test4/{a}/{bbb}" )
@ResponseBody
public  String test4(  @PathVariable ( "a" ) String aaa,  @PathVariable  String bbb )
{
     return  aaa+bbb;
}

  

這種情況簡單來說就是URL中采用動態綁定的形式表示。之后在方法中指定的參數通過PathVariable來將請求的URL中的參數綁定到方法參數,在這里不指定PathVariable注解的具體值時按照請求路徑動態變量的順序與注解順序一致即可注入。如果想指定注入,那么指定PathVariable注解的值與動態變量名一致即可特定注入,比如請求路徑是:http://localhost:8080/0919/test4/111/222

啟動主程序,出現如下結果,表明注入成功:

1
111222

  

5.第五種方式是通過RequestParam注解來獲取,具體代碼如下:

1
2
3
4
5
6
@RequestMapping ( value =  "/test5" )
@ResponseBody
public  String test5(  @RequestParam ( "aaa" ) String aac, @RequstParam ( "bbb" ) String bbb)
{
     return  aac+bbb;
}

  

這種方式是通過URL路徑的形式將請求路徑上的參數綁定都方法參數上,簡單來說就是實參值賦給響應的形參,與上面這種方式的區別是前者是動態URL模板注入,這里是普通的URL請求注入,比如訪問這個路徑:

http://localhost:8080/0919/test5?aaa = 111 & bbb = 4444

啟動主程序,出現如下結果,表明注入成功

1
1114444

  

6.第六中方式是通過ModelAttribute方式來注入參數的,具體代碼如下:

1
2
3
4
5
6
7
8
9
10
11
@RequestMapping ( value =  "/kkk" )
public  String kkk()
{
     return  "test2" ;
}
 
@RequestMapping ( value =  "/test6" )
public  String test6(  @ModelAttributer ( "kkk" ) Student s )
{
     return  "test3" ;
}

  

這種方式一般是通過在頁面展示,所以這里創建兩個頁面做測試test2.jsp和test3.jsp進行測試

1
2
3
4
5
6
7
8
< body >
     < form  action = "<%= request.getContextPath()%>/0919/test6" method = "post">
         firstName: < input  type = "text" name = "firstName"/>< br />
         lastName< input  type  = "text" name = "lastName">< br />
         < input  type = "submit" value = "提交"/>
         < input  type = "reset" value = "重置">
     </ form >
</ body >

  

1
2
3
< body >
     ${kkk.firstName} + ${kkk.lastName}
</ body >

  

簡單來說就是通過ModelAttribute注解將請求參數封裝到指定的Javabean對象,同時通過value值將這接受了表單參數對象賦給value,這里將S賦給了一個變量名為kkk的存在,之后就可以在JSP頁面通過這個變量名使用el表達式來獲取傳過來的參數,測試路徑為:http://localhost:8080/0919/kkk

 

 

輸出結果為:

1
bbb+aaa

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM