SpringMVC前后端传值的两种方式
一、从Controller层到jsp界面
1、使用HttpServletRequest的方式
这种方式大家肯定非常熟悉了,用法跟 javaWeb 一模一样
Controller层:
@RequestMapping("/test")
public String test(HttpServletRequest servletRequest, Users user){
user = new Users();
user.setUsername("admin");
user.setPassword("123");
servletRequest.setAttribute("username",user.getUsername());
servletRequest.setAttribute("password",user.getPassword());
return "Register";
}
jsp界面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册界面</title>
</head>
<body>
username:${username}<br>
password:${password}
</body>
</html>
运行结果:
2、使用HttpSession的方式
这种方式跟上面一样,在这里就不多说了
3、使用Model的方式
Controller层:
@RequestMapping("/test")
public String test(Model model, Users user){
user = new Users();
user.setUsername("admin");
user.setPassword("123");
model.addAttribute("username",user.getUsername());
model.addAttribute("password",user.getPassword());
return "Register";
}
jsp界面跟上面一样,运行结果也是一样的
4、使用ModelAndView的方式
@RequestMapping("/test")
public ModelAndView test(Model model, Users user){
ModelAndView mav = new ModelAndView();
user = new Users();
user.setUsername("admin");
user.setPassword("123");
mav.addObject("username",user.getUsername());
mav.addObject("password",user.getPassword());
mav.setViewName("Register");//设置视图名,用于跳转
return mav;
}
二、从jsp界面到Controller层
1、直接将请求参数名作为方法的形参
jsp界面:
<form action="/user/test" method="get">
username:<input type="text" name="username" />
<p>
password:<input type="password" name="password"/>
<p>
<input type="submit" value="submit" />
</form>
Controller层:
@RequestMapping("/test")
//方法里面的形参要跟前端的name名相等,否则Spring找不到
public String test(String username,String password){
System.out.println(username+":"+password);
return "StudentList";
}
2、使用@RequestParam 绑定请求参数值(推荐使用)
jsp界面跟上面一样
Controller层:
@RequestMapping("/test")
public String test(@RequestParam("username") String username1,@RequestParam("password") String password1){
System.out.println(username1+":"+password1);
return "StudentList";
}
3、使用Pojo类
Pojo类:
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Users {
private Integer id;
private String username;
private String password;
private String email;
}//使用lombok插件,用注解代替Get和Set等方法
Controller层:
@RequestMapping("/test")
public String test(Users user){
System.out.println(user.getUsername()+"======="+user.getPassword());
return "StudentList";
}
4、使用HttpServletRequest的方式
Controller层:
@RequestMapping("/test")//原理:利用set的反射机制找到User对象中的属性
public String test(Users user, HttpServletRequest servletRequest){
String username = servletRequest.getParameter("username");
String password = servletRequest.getParameter("password");
System.out.println(username+"===="+password);
return "StudentList";
}