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

目录

一、前言

二、前端

         (1)index.jsp

         (2)main.jsp

三、后端

        (1)User实体

        (2)接口

四、测试

        (1)使用请求转发

        (2)使用重定向

五、总结


一、前言

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

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

        (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方式生效,其他方式无法携带数据跳转
    }


五、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电竞丶小松哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值