目录
一、前言
当后端执行请求转发跳转的同时,需要通过接口将数据发送到前端页面。
以下类型只要写在方法参数中就可以使用了。
(1)HttpServletRequest对象
(2)HttpServletResponse对象
(3)HttpSession对象
(4)Model/ModelMap对象
(5)Map<String,Object>对象
注意:Model、Map、ModelMap都使用的是request请求作用域,意味着只能是请求转发后,页面才可以得到值。
二、前端
触发超链接携带姓名和年龄信息并请求转发“myInfo.do”
(1)index.jsp
<a href="${pageContext.request.contextPath}/myInfo.do?name=张松&age=24">访问服务器,进行数据携带跳转</a>
(2)main.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>main...显示数据</h2>
requestUsers:${requestUser}<br>
sessionUsers:${sessionUser}<br>
modelUsers:${modelUser}<br>
mapUsers:${mapUser}<br>
modelMapUsers:${modelMapUser}<br>
从index.jsp页超链接获取的姓名${param.name}
从index.jsp页超链接获取的年龄${param.age}
</body>
</html>
三、后端
(1)User实体
public class User {
private String name;//姓名
private int age;//年龄
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = 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;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
(2)接口
/**
* 所有形参都是SpringMVC默认内置的对象,不需要自己new,直接使用即可
*/
@RequestMapping("/myInfo.do")
public String data(HttpServletRequest request,
HttpServletResponse response, //响应对象无法携带参数
HttpSession session,
Model model,
Map map,
ModelMap modelMap){
//生成数据,传到main.jsp页面上
User u = new User("张松",24);
//传递数据
request.setAttribute("requestUser",u);
session.setAttribute("sessionUser",u);
model.addAttribute("modelUser",u);
map.put("mapUser",u);
modelMap.addAttribute("modelMapUser",u);
return "main"; //请求转发方式跳转页面
//return "redirect:/admin/main.jsp"; //使用重定向只有session方式生效,其他方式无法携带数据跳转
}
四、测试
之所以使用超链接发送数据,是为了测试,在请求转发之后,页面已经变了,是否能获取到最初第一个页面URL的键值数据,从测试结果得出,是可以正常获取到的。
(1)使用请求转发
(2)使用重定向
@RequestMapping("/myInfo.do")
public String data(HttpServletRequest request,
HttpServletResponse response, //响应对象无法携带参数
HttpSession session,
Model model,
Map map,
ModelMap modelMap){
//生成数据,传到main.jsp页面上
User u = new User("张松",24);
//传递数据
request.setAttribute("requestUser",u);
session.setAttribute("sessionUser",u);
model.addAttribute("modelUser",u);
map.put("mapUsers",u);
modelMap.addAttribute("modelMapUser",u);
//return "main"; //请求转发方式跳转页面
return "redirect:/admin/main.jsp"; //使用重定向只有session方式生效,其他方式无法携带数据跳转
}
五、总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~