数据回显
一、通过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的数据回显和接收请求参数的技术要点,后续会持续更新,各位猿友多多点赞支持哈!