SpringMVC篇—SpringMVC接收请求参数和数据回显功能,一篇文章保证将其拿下!

数据回显

一、通过MoudelAndView
比较常见

public class MyController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //创建视图模型对象,携带参数返回给前端,可以存储数据的同时,可以进行设置返回的逻辑视图,视图解析器解析后进行页面跳转
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","HelloSpringMVC");
        mv.setViewName("hello");
        return mv;
    }
}

二、通过Moudel

@Controller
public class TestGetParameter {
    @RequestMapping("testParameter")
    public String testGetParameter( int a, int b, Model model){
        int res = a + b;
        //封装要显示到视图中的数据,相当于req.setAttribute("res",res)
        model.addAttribute("msg",res);
        return "test";
    }
}

三、通过MoudelMap
大多数情况下,直接使用Moudel即可,MoudelMap继承了LinkedMap,能够使用LinkedMap的所有方法

接收请求参数

一、提交的域名称和处理方法的参处数名一致
我们直接在网址栏输入对应的参数,不用输入变量即可,后台方法就能够接收到前端传递的数据
这里涉及到一个Spring的强大功能,自动转换器:比如我们前端通过form提交一个表单,表单中的数据正是我们某个对象的属性,那么我们只需要在Controller类中传一个对象,他会帮我们自动把前端传来的参数转换,和对象的属性一一对应!!!!!!
代码演示:
1、编写实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}

2、编写对应的控制类


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/test01")
    public String test01(String name, Model model) {
        //1、接收参数
        System.out.println("接收到的参数为:" + name);

        //2、将返回的结果传递给前端,用model
        model.addAttribute("msg",name);

        //3、视图跳转
        return "test";
    }
}

3、编写跳转到的jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

4、启动服务器,输入name,成功跳转试图并且获取到了name

二、如果提交的域名称和方法的参数不一致
这里就需要用到了注解@RequestParam,将浏览器网址栏中的变量名和方法中的参数进行绑定,当我页面上输入这个注解中的名字时,系统会自动帮我们匹配到方法中对应的变量,注意,要养成习惯,将来方法中的变量无论是否和前端传的参数名是否相同,都加上这个注解,表示这个参数需要从前端获取
测试:
控制类方法代码:

@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/test01")
    public String test01(@RequestParam("username") String name, Model model) {
        //1、接收参数
        System.out.println("接收到的参数为:" + name);

        //2、讲返回的结果传递给前端,用model
        model.addAttribute("msg",name);

        //3、视图跳转
        return "test";
    }
}

1、首先我使用注解对控制类方法中的参数进行绑定,但是我在前端输入原本的方法参数名,系统报错

2、当我将name换成username,成功将数据传输 


三、如果提交的是一个对象
则要求提交的表单域和对象的属性名一致,参数使用对象即可
1、编写实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}

2、编写控制类

@GetMapping("/test02")
public String test02(User user){
    System.out.println(user);
    
    return "test";
}


3、启动服务器,浏览器传入对应的参数,观察控制台打印结果
成功将对象打印出来,并且成功传参,得出结论,框架中我们不需要对对象进行某个参数的对应,直接按照顺序并且名称对应即可接收请求的参数

至此,你已经掌握了关于SpringMVC的数据回显和接收请求参数的技术要点,后续会持续更新,各位猿友多多点赞支持哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Be explorer

若认可笔者文章,手头富裕望支持

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

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

打赏作者

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

抵扣说明:

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

余额充值