接参方式
(1)使用 HttpServletRequest
前端传什么参数,就接什么参数
@RequestMapping(value = "/test")
public String test2(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
return "success";
}
(2)使用 Spring
正常情况:
页面传值时的 key = 处理请求的方法的参数名
@RequestMapping(value = "/test")
public String test3(String username,String password){
System.out.println(username);
System.out.println(password);
return "success";
}
情况一: 当页面传入的参数名与使用的名字不一样时(类型一致)
使用 @RequestParam(name = “属性名”) 进行绑定
@RequestMapping(value = "/test")
public String test5(@RequestParam(name = "username") String name, String password){
System.out.println(name);
System.out.println(password);
return "success";
}
情况二: 当传入参数类型不匹配(名字不同)或者没有传入时(设置默认值)
@RequestParam(defaultValue = “默认值”)
@RequestMapping(value = "/test")
public String test6(String username, @RequestParam(defaultValue = "333")Integer password){
System.out.println(username);
System.out.println(password);
return "success";
}
(3)使用控件
使用控件名与对象属性一致的方式
//控件类:
public class User {
private String username;
private String password;
....
}
//controller类
@RequestMapping(value = "/test")
public String test4(User user){
System.out.println(user.getUsername());
System.out.println(user.getPassword());
return "success";
}
解决时间格式问题:
(1)Spring MVC 框架默支持转换得日期格式: yyyy/MM/dd
可以正常转换:
//前端传入参数格式:2020/1/1
@RequestMapping("/test3")
public ModelAndView test8(Date birthday){
System.out.println(birthday);
return mv;
}
(2)使用 SimpleDataFormate 转换
使用 string 接受日期后,再转换: SimpleDataFormate
(3)使用工具类DateTimeFormat
处理日期
步骤1:添加依赖
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
步骤2:修改配置文件
xmlns:mvc="http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
配置文件:<mvc:annotation-driven/>
步骤3:测试
//时间类型转换:使用@DateTimeFormat(pattern = "yyyy-MM-dd")方式
@RequestMapping("/test2")
public String test7(@DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday, HttpServletRequest request, ModelMap map, Model model){
System.out.println(birthday);
return "success";
}
注意点: 参数类型使用引用数据类型,基本数据类型使用包装类
返参方式
(1)使用 HttpServletRequest
request 存值转发时有效,重定向时丢失
@RequestMapping("/test2")
public String test7(Date birthday, HttpServletRequest request){
request.setAttribute("birthday",birthday);
return "success";
}
(2)使用 ModelMap map
默认作用域 request
@RequestMapping("/test2")
public String test7(Date birthday,ModelMap map){
map.addAttribute("mapKey",birthday);
return "success";
}
(3)使用 Model
@RequestMapping("/test2")
public String test7( Date birthday,Model model){
model.addAttribute("modelKey",birthday);
return "success";
}
(4)使用 ModelAndView
ModelAndView 对象需要new
,同时作为 返回值 类型
@RequestMapping("/test3")
public ModelAndView test8(Date birthday){
//1.new ModelAndView对象
ModelAndView mv = new ModelAndView();
//2.存值
mv.setViewName("success");//跳转页面名字
mv.addObject("viewKey",birthday);
//3.返回
return mv;
}