springmvc默认的参数类型

    • 1)HttpServletRequest
    • 2)HttpServletResponse
    • 3)HttpSession
    • 4)Model
    • 5)Map
    • 6)ModelMap
    • 以上是不需要创建即可用(注意:Map,Model,ModelMap和request都是使用请求作用域进行数据传递.所以服务器端的跳转必须是请求转发)

    接上一个项目(请求转发)

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/4/26
    5. Time: 11:55
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Title</title>
    12. </head>
    13. <body>
    14. ...
    15. <a href="${pageContext.request.contextPath}/four">4.重定向</a>
    16. <br><br><br>
    17. <a href="${pageContext.request.contextPath}/data">访问服务器,进行数据携带跳转</a>
    18. </body>
    19. </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页传来的数据
    

    发现数据都跳丢了