参考资料
既然parameter和attribute都是传递参数,为什么不直接使用parameter呢?
⏹前台
DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<script type="text/javascript" th:src="@{/js/public/jquery-3.6.0.min.js}">script>
<script type="text/javascript" th:src="@{/js/common/common.js}">script>
<title>test11页面title>
head>
<body>
<button id="btn" type="button">发送get请求,传递参数button>
body>
<script>
$("#btn").click((event) => {
// 构造传递参数对象
const urlSearchParams = new URLSearchParams();
urlSearchParams.append("name", "贾飞天");
urlSearchParams.append("age", "18");
$.get(`/test11/getRequest?${urlSearchParams.toString()}`, function(data, status){
});
});
script>
html>
⏹后台Controller层
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
@Controller
@RequestMapping("/test11")
public class Test11Controller {
@Resource
private HttpServletRequest request;
@GetMapping("/init")
public ModelAndView init() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("test11");
return modelAndView;
}
@GetMapping("/getRequest")
public String getRequest(@RequestParam String name, @RequestParam Integer age) {
System.out.println("年龄为:" + age);
// 向请求书属性中放入相应值,用于转发时的数据传递
request.setAttribute("orgName", name);
request.setAttribute("orgInfo", Arrays.asList("张三", "李四"));
return "forward:/test11/forward";
}
@GetMapping("/forward")
public void forward(
// 通过该注解接收request中的属性
@RequestAttribute(value = "orgName" , required = false) String name,
@RequestAttribute(value = "orgInfo") List<String> orgInfoList
) {
System.out.println("姓名为:" + name);
System.out.println("信息list为:" + orgInfoList);
// 除了可以通过@RequestAttribute获取之外,还可以通过原生Servlet来获取
List infoList = (List)request.getAttribute("orgInfo");
System.out.println(infoList);
}
}