springmvc默认的参数类型
- 1)HttpServletRequest
- 2)HttpServletResponse
- 3)HttpSession
- 4)Model
- 5)Map
- 6)ModelMap
- 以上是不需要创建即可用(注意:Map,Model,ModelMap和request都是使用
请求作用域进行数据传递.所以服务器端的跳转必须是请求转发)
接上一个项目(请求转发)
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2022/4/26Time: 11:55To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body>...<a href="${pageContext.request.contextPath}/four">4.重定向</a><br><br><br><a href="${pageContext.request.contextPath}/data">访问服务器,进行数据携带跳转</a></body></html>
package com.chentianyu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
public class DataAction {
@RequestMapping("/data")
public String data(HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
Model model,
Map map,
ModelMap modelMap){
//做一个数据传到main.jsp页面上
return "main";//请求转发方式跳转
}
}
做一个实体类Users
package com.chentianyu.pojo;
public class Users {
private String name;
private int age;
public Users() {
}
public Users(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 "Users{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
再来做DataAction.java
package com.chentianyu.controller;
import com.chentianyu.pojo.Users;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
public class DataAction {
@RequestMapping("/data")
public String data(HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
Model model,
Map map,
ModelMap modelMap){
//做一个数据传到main.jsp页面上
Users users = new Users("张三",22);
//传递数据
request.setAttribute("requestUserZS",users);
session.setAttribute("sessionUserZS",users);
model.addAttribute("modelUserZS",users);
map.put("mapUserZS",users);
modelMap.addAttribute("modelMapUserZS",users);
return "main";//请求转发方式跳转
}
}
取出数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
request.setAttribute("requestUserZS",users);
session.setAttribute("sessionUserZS",users);
model.addAttribute("modelUserZS",users);
map.put("mapUserZS",users);
modelMap.addAttribute("modelMapUserZS",users);
--%>
<p>main...</p>
<p>requestUserZS:${requestUserZS}</p>
<p>sessionUserZS:${sessionUserZS}</p>
<p>modelUserZS:${modelUserZS}</p>
<p>mapUserZS:${mapUserZS}</p>
<p>modelMapUserZS:${modelMapUserZS}</p>
</body>
</html>
上面的方法是通过一个@RequestMapping()和去转发数据得到的,我们直接通过index.jsp页面去跳转main.jsp页面也是可以的:
<a href="${pageContext.request.contextPath}/data?name=zar">访问服务器,进行数据携带跳转2</a>
<p>从index.jsp页传来的数据${param.name}</p><%--param是${}里的内置对象--$>
完全可以取到
从index.jsp页传来的数据zar
有个坑,不是转发跳而是**重定向跳**
@RequestMapping("/data")
public String data(HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
Model model,
Map map,
ModelMap modelMap){
//做一个数据传到main.jsp页面上
Users users = new Users("张三",22);
//传递数据
request.setAttribute("requestUserZS",users);
session.setAttribute("sessionUserZS",users);
model.addAttribute("modelUserZS",users);
map.put("mapUserZS",users);
modelMap.addAttribute("modelMapUserZS",users);
//return "main";//请求转发方式跳转
return "redirect:/admin/main.jsp";
}
main...
requestUserZS:
sessionUserZS:Users{name='张三', age=22}
modelUserZS:
mapUserZS:
modelMapUserZS:
从index.jsp页传来的数据
发现数据都跳丢了
