日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 响应 请求参数_spring基础----请求与响应的参数(一)

發布時間:2024/9/3 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 响应 请求参数_spring基础----请求与响应的参数(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里面我們主要介紹一下spring中關于請求和響應參數數據的問題。愛,從來就是一件千回百轉的事。不曾被離棄,不曾受傷害,怎懂得愛人?愛,原來是一種經歷。

spring中的請求與響應

一、spring中json格式的post請求

客戶端發送json格式的數據,例如以下的user對象的信息是我們要插入到數據庫中的。

{"userId": "huhx1","username": "linux1","passowrd": "pwd11","sex": "0","phoneNumber": "15527100207","address": "wuhan1","birthday": "2017-12-12"}

我們的controller處理方法中的參數可以用Bean接收,也可以使用Map。如下:

@PostMapping("user3")public ResponseBeaninsertUser(@RequestBody User user) {

logger.info("user = {}", user);

userMapper.insertUser(user);returnResultUtil.success(user);

}

@PostMapping("user4")public ResponseBean> insertUser(@RequestBody Mapuser) {

logger.info("map = {}", user);

userMapper.insertMapUser(user);returnResultUtil.success(user);

}

需要注意的是參數必須要用@RequestBody注解,否則請求的參數是不能正確的注入到參數的類中。關于這個注解和@ResponseBody差不多的功能,就是可以將我們的請求或者響應的數據通過HttpMessageConverters類轉換成我們想要的類型(被注解的類型)。官方文檔說明如下:

1、@RequestBody annotated parameters for access to the HTTP request body. Parameter values are converted to the declared method argument type usingHttpMessageConverters.2、If the method is annotated with @ResponseBody, the return type is written to the response HTTP body. The return value will be converted to the declared method argument type usingHttpMessageConverters.3、@RestController is a stereotype annotation that combines @ResponseBody and @Controller.

對于json格式的傳遞參數,使用@RequestParam也無法正確傳遞參數。例如像下面的這種:

請求的json數據如下:

{"type": "file","content": "huhx.txt"}

下面是我們的java代碼

@PostMapping("javasql")public String generateJavaBean2(@RequestParam String type, @RequestParam String content) {}

而且對于這種有兩個參數的話,使用@RequestBoby注解兩個參數的話,也會報錯的。

Required request body is missing: public java.lang.String com.linux.huhx.generate.db.MysqlBeanAction.generateJavaBean2(java.lang.String,java.lang.String) throws java.io.IOException

正確的做法應該如下:

public String generateJavaBean2(@RequestBody Map map) throwsIOException {

String type= map.get("type");

String content= map.get("content");

}

二、spring中表單格式的post請求

如果是表單形式的post請求,那么不需要@RequestBody注解。直接在controller對應方法的參數中注明該類就可以,在postman中如果birthday輸入的是2017-12-12。會報string不能轉換成date的錯,這里面如果一定要支持2018-12-12字符串格式的時間傳遞,可以使用spring自定義的converter或者formatter接口的實現類。具體可以參考博客:

上述測試的java代碼

@PostMapping("user3")public ResponseBeaninsertUser(User user) {

logger.info("user = {}", user);

userMapper.insertUser(user);returnResultUtil.success(user);

}

在使用JSON.toJSONString(this);格式化對象控制臺中輸出的結果如下:

user = {"birthday":1513653098000,"password":"12345","phoneNumber":"2222","sex":1,"userId":"huhx3","username":"huhx3"}

我們返回的數據都是json格式的,這是因為我們在注解控制器的時候用的是@RestController注解。上述也提到過了,它是@Controller和@ResponseBody的復合注解。可以在它的源碼中找到:

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Controller

@ResponseBodypublic @interfaceRestController {

String value()default "";

}

三、spring中表單的get請求

get傳遞參數的方式,我們的java代碼如下:

@GetMapping("getRequest1")public ResponseBeangetRequest1(String username) {

logger.info("username = {}", username);returnResultUtil.success(username);

}

我們通過postman發送get請求,url為:localhost:9998/mapper/getRequest1?username=huhx。返回的結果如下:

{"returnCode": 0,"returnMessage": "成功","response": "huhx"}

可以看到成功的接收到了get的請求參數,當然也可以使用@RequestParam修改參數的名稱。如下:

@GetMapping("getRequest1")public ResponseBean getRequest1(@RequestParam("username") String name) {

logger.info("username = {}", name);returnResultUtil.success(name);

}

get請求路徑上的參數

@GetMapping("getRequest2/{username}")public ResponseBean getRequest2(@PathVariable("username") String name) {

logger.info("username = {}", name);returnResultUtil.success(name);

}

如果像上述url參數的那樣,省略@PathVariable注解,使用下面的這種方式將會失效得不到傳遞的參數。

@GetMapping("getRequest2/{username}")public ResponseBeangetRequest2(String username) {

logger.info("username = {}", username);returnResultUtil.success(username);

}

友情鏈接

總結

以上是生活随笔為你收集整理的java 响应 请求参数_spring基础----请求与响应的参数(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。