国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解

這篇具有很好參考價(jià)值的文章主要介紹了【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

訪問不同的路徑,就是發(fā)送不同的請(qǐng)求.在發(fā)送請(qǐng)求時(shí),可能會(huì)帶?些參數(shù),所以我們?cè)趯W(xué)習(xí)Spring的請(qǐng)求時(shí),主要是學(xué)習(xí)如何傳遞參數(shù)到后端以及后端如何接收.

下面博主會(huì)對(duì)傳遞參數(shù)進(jìn)行一個(gè)詳解,咱們主要是使?瀏覽器和Postman來(lái)模擬

??傳遞單個(gè)參數(shù)

@RestController
public class hello {
    @RequestMapping("/test")
    public String test(String name){
        return "接受到的參數(shù):"+name;
    }

}

當(dāng)我們運(yùn)行后,用瀏覽器進(jìn)行訪問

http://127.0.0.1:8080/pt/test1?name=山頂是一定要去的

訪問結(jié)果如下:
【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot
注意:

  • 如果參數(shù)名不一致,獲取不到參數(shù),默認(rèn)沒有傳參,默認(rèn)值為null

【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot

  • 如果參數(shù)類型不?致,是會(huì)進(jìn)行報(bào)錯(cuò)的
@RestController
public class hello {
    @RequestMapping("/test")
    public String test(Integer name){
        return "接受到的參數(shù):"+name;
    }
}

【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot
注意:

  • 如果使?基本類型來(lái)接收參數(shù)時(shí),參數(shù)必須傳(除boolean類型),否則會(huì)報(bào)500錯(cuò)誤
@RestController
public class hello {
    @RequestMapping("/test")
    public String test(int name){
        return "接受到的參數(shù):"+name;
    }
}

【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot

日志中也會(huì)進(jìn)行報(bào)錯(cuò)。
【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot
建議使用包裝類?。?!

??傳遞多個(gè)參數(shù)

與傳遞單個(gè)參數(shù)一樣

不同的是當(dāng)有多個(gè)參數(shù)時(shí),前后端進(jìn)?參數(shù)匹配時(shí),是以參數(shù)的名稱進(jìn)?匹配的,因此參數(shù)的位置是不影響后端獲取參數(shù)的結(jié)果

??傳遞對(duì)象

如果參數(shù)?較多時(shí),?法聲明就需要有很多形參.并且后續(xù)每次新增?個(gè)參數(shù),也需要修改?法聲明.

我們不妨把這些參數(shù)封裝為?個(gè)對(duì)象.

Spring MVC也可以?動(dòng)實(shí)現(xiàn)對(duì)象參數(shù)的賦值,?如Person對(duì)象

public class Person {
    private int id;
    private String name;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

@RequestMapping("test5")
    public String test5(Person person) {
        return "接收到的參數(shù)名為:" + person.toString();
    }

【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解,Java EE,java-ee,spring,java,mvc,spring boot
注意

Spring會(huì)根據(jù)參數(shù)名稱?動(dòng)綁定到對(duì)象的各個(gè)屬性上,如果某個(gè)屬性未傳遞,則賦值為null(基本類型則賦值為默認(rèn)初識(shí)值,?如int類型的屬性,會(huì)被賦值為0)

??后端參數(shù)重命名(后端參數(shù)映射)

某些特殊的情況下,前端傳遞的參數(shù)key和我們后端接收的key可以不?致,?如前端傳遞了?個(gè)time給后端,?后端是使?createtime字段來(lái)接收的,這樣就會(huì)出現(xiàn)參數(shù)接收不到的情況,如果出現(xiàn)這種情況,我們就可以使? @RequestParam 來(lái)重命名前后端的參數(shù)值.

    @RequestMapping("test6")
    public String test6(@RequestParam("time") String createtime) {
        return "接收到的參數(shù)名為:" + createtime;
    }

注意:

  • 使? @RequestParam 進(jìn)?參數(shù)重命名時(shí),請(qǐng)求參數(shù)只能和@RequestParam 聲明的名稱?致,才能進(jìn)?參數(shù)綁定和賦值.
  • 使? @RequestParam 進(jìn)?參數(shù)重命名時(shí),參數(shù)就變成了必傳參數(shù)
  • 如果我們不想讓他變成必傳參數(shù),我們可以通過設(shè)置@RequestParam 中的 required=false (默認(rèn)為true,必傳)來(lái)避免不傳遞時(shí)報(bào)錯(cuò)
    @RequestMapping("test6")
    public String test6(@RequestParam(value = "time",required = false) String createtime) {
        return "接收到的參數(shù)名為:" + createtime;
    }

??傳遞數(shù)組

Spring MVC 可以?動(dòng)綁定數(shù)組參數(shù)的賦值

    @RequestMapping("test7")
    public String test7(String[] names) {
        return "接收到的參數(shù)名為:" + Arrays.toString(names);
    }

數(shù)組傳參時(shí),有以下幾種:
1:http://127.0.0.1:8080/pt/test7?names=張三&names=李四
2:http://127.0.0.1:8080/pt/test7?names=張三%2c李四
3:http://127.0.0.1:8080/pt/test7?names=張三,李四

??傳遞集合

集合參數(shù):和數(shù)組類似,同?個(gè)請(qǐng)求參數(shù)名有為多個(gè)

不同的時(shí)需要使? @RequestParam 綁定參數(shù)關(guān)系

傳參方式與上述數(shù)組傳參三種方式一樣

@RequestMapping("/m6")
public String method6(@RequestParam List<String> listParam){
	return "size:"+listParam.size() + ",listParam:"+listParam;
}

??傳遞JSON數(shù)據(jù)

??JSON概念

JSON:JavaScript Object Notation【JavaScript對(duì)象表?法】

JSON是?種輕量級(jí)的數(shù)據(jù)交互格式.它基于ECMAScript(歐洲計(jì)算機(jī)協(xié)會(huì)制定的js規(guī)范)的?個(gè)?集,采?完全獨(dú)?于編程語(yǔ)?的?本格式來(lái)存儲(chǔ)和表?數(shù)據(jù)。

簡(jiǎn)單來(lái)說(shuō):JSON就是?種數(shù)據(jù)格式,有??的格式和語(yǔ)法,使??本表??個(gè)對(duì)象或數(shù)組的信息,因此JSON本質(zhì)是字符串.

主要負(fù)責(zé)在不同的語(yǔ)?中數(shù)據(jù)傳遞和交換

??JSON的語(yǔ)法

  1. 數(shù)據(jù)在 鍵值對(duì)(Key/Value) 中
  2. 數(shù)據(jù)由逗號(hào) , 分隔
  3. 對(duì)象? {} 表?
  4. 數(shù)組? [] 表?
  5. 值可以為對(duì)象,也可以為數(shù)組,數(shù)組中可以包含多個(gè)對(duì)象

??JSON的兩種結(jié)構(gòu)

  1. 對(duì)象:?括號(hào) {} 保存的對(duì)象是?個(gè)?序的 鍵值對(duì) 集合.?個(gè)對(duì)象以左括號(hào) { 開始,右括號(hào) }結(jié)束。每個(gè)"鍵"后跟?個(gè)冒號(hào) :
    ,鍵值對(duì)使?逗號(hào) , 分隔
  2. 數(shù)組: 中括號(hào) [ ] 保存的數(shù)組是值(value)的有序集合.?個(gè)數(shù)組以左中括號(hào) [ 開始,右中括號(hào) ] 結(jié)束,值之間使?逗號(hào) , 分隔。

??JSON字符串和Java對(duì)象互轉(zhuǎn)

JSON本質(zhì)上是?個(gè)字符串,通過?本來(lái)存儲(chǔ)和描述數(shù)據(jù)

Spring MVC框架也集成了JSON的轉(zhuǎn)換?具,我們可以直接使?,來(lái)完成JSON字符串和Java對(duì)象的互轉(zhuǎn)

??JSON的優(yōu)點(diǎn)

  1. 簡(jiǎn)單易?:語(yǔ)法簡(jiǎn)單,易于理解和編寫,可以快速地進(jìn)?數(shù)據(jù)交換

  2. 跨平臺(tái)?持:JSON可以被多種編程語(yǔ)?解析和?成,可以在不同的平臺(tái)和語(yǔ)?之間進(jìn)?數(shù)據(jù)交換和傳輸

  3. 輕量級(jí):相較于XML格式,JSON數(shù)據(jù)格式更加輕量級(jí),傳輸數(shù)據(jù)時(shí)占?帶寬較?,可以提?數(shù)據(jù)傳輸速度

  4. 易于擴(kuò)展:JSON的數(shù)據(jù)結(jié)構(gòu)靈活,?持嵌套對(duì)象和數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),便于擴(kuò)展和使?

  5. 安全性:JSON數(shù)據(jù)格式是?種純?本格式,不包含可執(zhí)?代碼,不會(huì)執(zhí)?惡意代碼,因此具有較?的安全性

基于以上特點(diǎn),JSON在Web應(yīng)?程序中被?泛使?,如前后端數(shù)據(jù)交互、API接?數(shù)據(jù)傳輸?shù)?/p>

??傳遞JSON對(duì)象

接收J(rèn)SON對(duì)象,需要使? @RequestBody 注解

RequestBody:請(qǐng)求正?,意思是這個(gè)注解作?在請(qǐng)求正?的數(shù)據(jù)綁定,請(qǐng)求參數(shù)必須在寫在請(qǐng)求正?中

    @RequestMapping("test9")
    public String test9(@RequestBody Person person) {
        return "接收到的參數(shù)名為:" + person.toString();
    }

??獲取URL中參數(shù)@PathVariable

path variable:路徑變量

和字?表達(dá)的意思?樣,這個(gè)注解主要作?在請(qǐng)求URL路徑上的數(shù)據(jù)綁定

    @RequestMapping("/test10/{id}/{name}")
    public String test10(@PathVariable Integer id, @PathVariable("name") String userName){
        return "解析參數(shù)id:"+id+",name:"+userName;
    }

注意:

  • 如果?法參數(shù)名稱和需要綁定的URL中的變量名稱?致時(shí),可以簡(jiǎn)寫,不?給@PathVariable的屬性賦值,如上述例?中的id變量

  • 如果?法參數(shù)名稱和需要綁定的URL中的變量名稱不?致時(shí),需要@PathVariable的屬性value賦值,如上述例?中的userName變量

??上傳文件@RequestPart

代碼實(shí)現(xiàn)如下:

    @RequestMapping("/test11")
    public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
        //獲取?件名稱
        String fileName = file.getOriginalFilename();
        //?件上傳到指定路徑
        file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
        return "接收到?件名稱為: "+fileName;
    }

??獲取Cooki/Session

由于這部分內(nèi)容較多,博主單獨(dú)寫了出來(lái)。鏈接如下:

??獲取Header

??傳統(tǒng)獲取 header

    @RequestMapping("/test17")
    public String test17(HttpServletRequest request, HttpServletResponse response) {
        String userAgent = request.getHeader("User-Agent");
        return  "userAgent:"+userAgent;
    }

??簡(jiǎn)潔獲取header

    @RequestMapping("/test18")
    public String test18(@RequestHeader("User-Agent") String userAgent) {
        return "userAgent:"+userAgent;
    }

?總結(jié)

感謝大家的閱讀,希望得到大家的批評(píng)指正,和大家一起進(jìn)步,與君共勉!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-848720.html

到了這里,關(guān)于【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 圖文詳解Java參數(shù)傳遞類型

    ??大家好,我是愛編程的喵喵。雙985碩士畢業(yè),現(xiàn)擔(dān)任全棧工程師一職,熱衷于將數(shù)據(jù)思維應(yīng)用到工作與生活中。從事機(jī)器學(xué)習(xí)以及相關(guān)的前后端開發(fā)工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現(xiàn)為CSDN博客專家、人工智能領(lǐng)域優(yōu)質(zhì)創(chuàng)作者。喜歡通過博客創(chuàng)作

    2024年02月17日
    瀏覽(23)
  • 【Spring教程28】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 請(qǐng)求與請(qǐng)求參數(shù)詳解

    【Spring教程28】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 請(qǐng)求與請(qǐng)求參數(shù)詳解

    歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實(shí)現(xiàn),如果您對(duì)Maven還很陌生,請(qǐng)移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《PostMan工具的安裝與使用技巧》 前面我們已經(jīng)完成了入門案例相關(guān)的知識(shí)學(xué)

    2024年02月03日
    瀏覽(28)
  • Spring MVC學(xué)習(xí)之——如何接收請(qǐng)求傳過來(lái)的參數(shù)

    Springmvc中,接收頁(yè)面提交的數(shù)據(jù)是通過方法形參來(lái)接收: 處理器適配器調(diào)用springmvc使用反射將前端提交的參數(shù)傳遞給controller方法的形參 springmvc接收的參數(shù)都是String類型,所以spirngmvc提供了很多converter(轉(zhuǎn)換器)在特殊情況下需要自定義converter,如對(duì)日期數(shù)據(jù) 直接接收即可

    2024年01月20日
    瀏覽(34)
  • @PathVariable、@PathParam、@RequestBody接收axios傳遞的請(qǐng)求參數(shù);后端接收前端傳遞過來(lái)的參數(shù)

    目錄 一、前言 :Content-Type 類型 ? ?(1)、?application/x-www-form-urlencoded 類型 (2)、application/json 類型 二、@PathVariable 二、@PathParam? 三、@RequestBody ?四、后端發(fā)送數(shù)據(jù)給前端 五、注意事項(xiàng) ? ? ? ? 請(qǐng)求參數(shù)以key-value的形式傳輸 ? ? ? ? 請(qǐng)求參數(shù)以JOSN串的形式傳輸 ? ? ? ? ax

    2024年01月18日
    瀏覽(21)
  • 【SpringMVC】參數(shù)傳遞與用戶請(qǐng)求和響應(yīng)

    【SpringMVC】參數(shù)傳遞與用戶請(qǐng)求和響應(yīng)

    目錄 一、Postman 工具使用 1.1 Postman安裝 1.2 Postman的使用 1.2.1 創(chuàng)建WorkSpace工作空間 1.2.2 創(chuàng)建請(qǐng)求 ? 二、參數(shù)傳遞 2.1 添加 Slf4j 依賴 2.2?普通傳參 知識(shí)點(diǎn)1:@RequestMapping 知識(shí)點(diǎn)2:@RequestParam 2.3 路徑傳參 知識(shí)點(diǎn)3:@PathVariable 2.4 Json數(shù)據(jù)傳參 ?知識(shí)點(diǎn)4:@RequestBody ? 三、響應(yīng) 3.1 響

    2024年02月09日
    瀏覽(22)
  • Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:接受客戶端(Client)請(qǐng)求參數(shù)

    Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:接受客戶端(Client)請(qǐng)求參數(shù)

    學(xué)習(xí)視頻:孫哥說(shuō)SpringMVC:結(jié)合Thymeleaf,重塑你的MVC世界?。八从械腤eb開發(fā)探索之旅 ?? 1. 接受客戶端(client)請(qǐng)求參數(shù)[講解]2. 調(diào)用業(yè)務(wù)對(duì)象3. 頁(yè)面跳轉(zhuǎn) 所謂簡(jiǎn)單變量:指的就是8種基本類型+String這些類型的變量。把這些類型的變量,作為控制器方法的形參,用于接受

    2024年02月05日
    瀏覽(39)
  • 小程序 POST 請(qǐng)求傳遞 FormData 格式參數(shù)

    向服務(wù)端發(fā)起POST請(qǐng)求時(shí),有些接口的參數(shù)需要以 FormData 形式傳遞。 小程序中沒有FormData對(duì)象,使用 let formdata = new FormData() 創(chuàng)建對(duì)象,會(huì)報(bào)錯(cuò) FormData is not defined 1、配置請(qǐng)求頭header: ‘content-type’: ‘a(chǎn)pplication/x-www-form-urlencoded; charset=UTF-8’ 2、參數(shù)修改為 字符串拼接形式:a

    2024年02月14日
    瀏覽(27)
  • http之GET請(qǐng)求和POST請(qǐng)求的傳遞參數(shù)的方式

    http之GET請(qǐng)求和POST請(qǐng)求的傳遞參數(shù)的方式

    get: 情況1:接口正常返回 code,data,message ,且無(wú)需傳遞參數(shù) (vu3) 情況2: 需要將參數(shù)拼接到url地址上 (vue3) ? 情況3 需要傳遞參數(shù),query 傳參 (vue3) 情況4 既有query傳參也有path傳參 post 情況1 接口返回的數(shù)據(jù)沒有使用data包裹,這種情況一般取不到數(shù)據(jù),我們需要用 ext

    2024年02月16日
    瀏覽(24)
  • 若依框架前后端各個(gè)請(qǐng)求方式參數(shù)傳遞示例

    封裝方法getBanner getBanner方法調(diào)用(customerBannerId是一個(gè)數(shù)字) 后端接口(@PathVariable 注解取得請(qǐng)求路徑中的參數(shù),注意此處的三個(gè)參數(shù)名要一致) 封裝方法getBanner getBanner 方法調(diào)用(customerBannerId是一個(gè)對(duì)象,這里屬性名與屬性值一致,簡(jiǎn)寫) 后端接口(前端傳遞的對(duì)象的屬性

    2024年02月03日
    瀏覽(16)
  • Postman中POST請(qǐng)求傳遞date類型參數(shù)

    Postman中POST請(qǐng)求傳遞date類型參數(shù)

    1.Pre-request Script下配置時(shí)間格式: 2.body — json參數(shù)設(shè)置,在這里引用上邊定義的時(shí)間格式:

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包