Spring MVC 傳參類型 ! 非常實用都懂了嗎?一起學習吧

參數

1.@RequestParam

主要來是於URL,如 https://www.toutiao.com/c/user/4142556860923036/#mid=1656249383812099 小編的主頁地址,就是這種參數。

2.@RequestBody

主要來自表單信息,通過POST的方式把表單的信息傳到後臺。

3.@RequestHeader

求請的表單頭。一般用來放瀏覽器信息,cookies等信息。


代碼實例

下面通過一個實例來說明Spring MVC 參數的設置,網絡傳輸抓包,以及前端的調用。

服務層代碼

<code>import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.sql.SQLException;
import java.util.List;

@CrossOrigin
@RestController
@Api(value = "Test", description = "Test")
public class Test {


@ApiOperation(value = "參數測試")
@RequestMapping(path = "test/paramTest", method = RequestMethod.POST)
public String paramTest(
@RequestParam String OperateType ,
@RequestBody InputClass inp,
@RequestHeader String token
) {
return "Richy's Test";
}
}/<code>

實體層

<code>package rui.tools.service.Test;

public class InputClass {
private String attr1;
private String attr2;

public String getAttr1() {
return attr1;
}

public void setAttr1(String attr1) {
this.attr1 = attr1;
}

public String getAttr2() {
return attr2;
}

public void setAttr2(String attr2) {
this.attr2 = attr2;
}
}
/<code>

前端測試

<code> function f_c() {
var url = "http://localhost:8080/test/paramTest?OperateType=add";
var opt = {
attr1: "a",
attr2: "b",

};
$.ajax({
type: "POST",
url: url,
headers: {
token:'key'
},
data: JSON.stringify(opt),
contentType: "application/json",
success: function (data) {
alert(data)
},
error: function (data) { alert("error"); }
});
}/<code>

瀏覽器網絡分析

@RequestParam對應的是URL的參數

@RequestBody對應的 是Form 的值

@RequestHeader 對應是 Head的參數

如下圖所示

Spring MVC 傳參類型 ! 非常實用都懂了嗎?一起學習吧

瀏覽器網絡分析


補充

因為是前後端分離,需要注意跨域的處理

本例子使用後臺設置header允許跨域訪問

代碼如下:

<code>import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WebFillter implements Filter {
public void destroy() {
}

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String originHeader = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", originHeader);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "0");
response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("XDomainRequestAllowed", "1");
response.setHeader("XDomainRequestAllowed", "1");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {

}
}/<code>

最後小編整理來自:https://blog.csdn.net/richyliu44/java/article/details/104571682,CSDN博主「Richy Liu」

你覺得今天小編整理的這個乾貨怎麼樣,覺得還行的話建議收藏評論哦!不介意的話可以點個關注轉發哦,後續小編會根據各位的需求整理有效有用的資料分享哦!謝謝大家支持!一起加油哦!


分享到:


相關文章: