(Spring笔记)SpringMVC请求转发下后端携带数据返回前端——默认形参类型

目录

一、前言

二、前端

         (1)index.jsp

         (2)main.jsp

三、后端

        (1)User实体

        (2)接口

四、测试

        (1)使用请求转发

        (2)使用重定向

五、总结


一、前言

        当后端执行请求转发跳转的同时,需要通过接口将数据发送到前端页面。

        以下类型只要写在方法参数中就可以使用了。

        (1)HttpServletRequest对象

        (2)HttpServletResponse对象

        (3)HttpSession对象

        (4)Model/ModelMap对象

        (5)Map对象

        注意:Model、Map、ModelMap都使用的是request请求作用域,意味着只能是请求转发后,页面才可以得到值。


二、前端

        触发超链接携带姓名和年龄信息并请求转发“myInfo.do

         (1)index.jsp

访问服务器,进行数据携带跳转

         (2)main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


main...显示数据

requestUsers:${requestUser}
sessionUsers:${sessionUser}
modelUsers:${modelUser}
mapUsers:${mapUser}
modelMapUsers:${modelMapUser}
从index.jsp页超链接获取的姓名${param.name} 从index.jsp页超链接获取的年龄${param.age}

三、后端

        (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)使用请求转发

(Spring笔记)SpringMVC请求转发下后端携带数据返回前端——默认形参类型_第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方式生效,其他方式无法携带数据跳转
    }

(Spring笔记)SpringMVC请求转发下后端携带数据返回前端——默认形参类型_第2张图片


五、总结

仅自己学习记录,如有错误,敬请谅解~,谢谢~~~

你可能感兴趣的:(Spring笔记,springmvc,请求转发,重定向,session,el)