欧美日韩国产一区,亚洲一区视频,色综合久久久久,私密按摩师舌头伸进去了,99re6这里只有精品,夜夜性日日交xxx性hd

java框架(2.3)參數(shù)的接收

  • • 發(fā)表于 8年前
  • • 作者 大妖怪
  • • 2773 人瀏覽
  • • 3 條評(píng)論
  • • 最后編輯時(shí)間 8年前
  • • 來(lái)自 [技 術(shù)]

原創(chuàng)聲明:本文為作者原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載,經(jīng)授權(quán)轉(zhuǎn)載需注明作者和出處

上章我們講到用@RequestBody注解接收參數(shù)和不用@RequestBody進(jìn)行了對(duì)比,發(fā)現(xiàn)這個(gè)這個(gè)注解注解到要接收的參數(shù)上就能接收json格式的參數(shù)。那么今天來(lái)具體說(shuō)說(shuō)接收參數(shù)這件事。
我們從前端接收參數(shù)有四種方式:

  • 普通的直接傳參
  • 通過(guò)httpServletRequet接收參數(shù)
  • 通過(guò)對(duì)象接收參數(shù)
  • 通過(guò)restful風(fēng)格的URl接收參數(shù)
    下面具體了解下:
  • 普通的直接傳參:

接收String:

@RequestMapping("/String")
public void StringTest(String name){
    System.out.println(name);
}

如果我們?cè)L問(wèn)這個(gè)地址,并且隨便通過(guò)一種方式穿個(gè)參數(shù):

我們?cè)诳刂婆_(tái)就可以看到接收到的參數(shù)了:

接收int:

@RequestMapping("/int")
public void intTest(int age){
    System.out.println(age);
}

同樣傳個(gè)參數(shù)試試:

也接收到了:

那么,我們看看如果在int類型傳入一個(gè)字符串:

這時(shí)候的結(jié)合是控制臺(tái)就不會(huì)打印內(nèi)容了。原因是沒(méi)有訪問(wèn)到地址。
當(dāng)我們傳入的是一個(gè)參數(shù),訪問(wèn)的時(shí)候,SpringMVC不僅會(huì)通過(guò)RequestMapping來(lái)匹配方法,同時(shí)還要根據(jù)參數(shù)類型來(lái)確定方法。因此在這我們沒(méi)有訪問(wèn)到要訪問(wèn)的方法。

  • 通過(guò)httpServletRequet接收參數(shù)
    這個(gè)就是之前Servlet學(xué)到的通過(guò)request來(lái)接收參數(shù),首先我們需要導(dǎo)入servlet-api依賴:
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0-b07</version>
      <scope>provided</scope>
    </dependency>
    
    然后寫上代碼:
    @RequestMapping("/request")
    public void request(HttpServletRequest request){
      String name = (String) request.getParameter("name");
      System.out.println(name);
    }
    
    有沒(méi)有發(fā)現(xiàn)和servlet幾乎一模一樣?反正之前servlet用的方法在這都能用,下去可以自行測(cè)試。
  • 通過(guò)對(duì)象接收一個(gè)參數(shù):
    比如說(shuō),我們有一個(gè)對(duì)象叫做user,user里面包含了name和age兩個(gè)字段。如果我們接收的時(shí)候name還有age一個(gè)個(gè)接收就會(huì)顯得太亂,特別是真正項(xiàng)目中字段很多的情況下,不僅看起來(lái)很亂,而且不好維護(hù)。于是強(qiáng)大的SpringMVC再次給我們提供了允許按對(duì)象來(lái)接收的支持:
    • 首先新建一個(gè)包param,然后創(chuàng)建一個(gè)user對(duì)象:
package com.demo.param;

public class User {
    private String name;

    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 然后新建一個(gè)方法:
@RequestMapping("/obj")
    public void obj(User user){
        System.err.println(user.getName());
        System.err.println(user.getAge());
    }


可以看出我們的參數(shù)都打印出來(lái)了(雖然是紅的,但是沒(méi)影響~):

  • restful接收參數(shù):
    前面貌似講到restful,就是在地址映射上加上{參數(shù)},這個(gè)有兩種方式:
    • @PathVariable不帶參數(shù)注解
      @RequestMapping("/restful/{name}")
      public void restful(@PathVariable String name){
      System.out.println(name);
      }
      
    • @PathVariable帶參數(shù)注解
      @RequestMapping("/restful/{name}")
      public void restful(@PathVariable("name") String aaa){
      System.out.println(aaa);
      }
      
      具體就不演示了,來(lái)總結(jié)下每種方式的注意點(diǎn):
  • 普通的直接傳參
    • 接收的變量的名稱必須和傳入?yún)?shù)的類型和名稱一致
  • 通過(guò)httpServletRequet接收參數(shù)
    • 需要導(dǎo)入servlet-api依賴
  • 通過(guò)對(duì)象接收參數(shù)
    • 對(duì)象的字段必須和要傳入?yún)?shù)的類型和名稱一致,弱不一致則不一致的部分參數(shù)接收不到
  • 通過(guò)restful風(fēng)格的URl接收參數(shù)
    • 參數(shù)在url上必須使用{}包裹,并且在接收的字段前必須加上@PathVariable注解
    • 若接收字段變量和{}內(nèi)的內(nèi)容一致,則@PathVariable的value屬性可加可不加,若加value屬性(value=””可以直接省略為””),必須和{}內(nèi)的內(nèi)容一致
    • 若接收字段變量和{}內(nèi)的內(nèi)容不一致,則@PathVariable的value屬性必須加,同value=””可以直接省略為””,必須和{}內(nèi)的內(nèi)容一致.

另外附上源碼:https://github.com/YaoguaiDa/SpringMVC_Demo
由于開(kāi)發(fā)環(huán)境變了,所以我在pom build節(jié)點(diǎn)下聲明的maven使用jdk版本,本次開(kāi)始代碼都上傳github,下章抽出一章講git。

分享到:
3條評(píng)論
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回復(fù):200 積分:7517

已加入社區(qū)[3076]天

夢(mèng)里巷口,可有你倚門回首

作者詳情》
Top