SpringMVC的参数类型转换

柔光的暖阳◎ 2022-05-11 03:24 247阅读 0赞
  1. package com.controller;
  2. import java.util.Date;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.springframework.format.annotation.DateTimeFormat;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestParam;
  9. import com.entity.CollectionVO;
  10. import com.entity.Person;
  11. @Controller
  12. @RequestMapping("/model2/")
  13. public class HelloAnnotation3 {
  14. //SpringMVC参数类型转换
  15. //1.int String http://localhost:8080/SpringMVCDemo/model2/m1?name=zhangsan&age=18
  16. @RequestMapping("m1")
  17. public String m1(int age,String name){
  18. System.out.println(age+","+name);
  19. //如果地址栏age参数为空,由于int不能接收null所以会报错,所以一般用包装类接收
  20. return "index";
  21. }
  22. //2.包装类Integer http://localhost:8080/SpringMVCDemo/model2/m2?age=18
  23. @RequestMapping("m2")
  24. public String m2(Integer age){
  25. System.out.println(age);
  26. return "index";
  27. }
  28. //3.数组 http://localhost:8080/SpringMVCDemo/model2/m3?arr=abc&arr=aaa&arr=hello
  29. @RequestMapping("m3")
  30. public String m3(String[] arr){
  31. System.out.println(arr.length);//3
  32. return "index";
  33. }
  34. //4.自定义类 http://localhost:8080/SpringMVCDemo/model2/m4?name=zhangsan&age=18
  35. @RequestMapping("m4")
  36. public String m4(Person p){
  37. System.out.println(p);
  38. System.out.println(p.getName()+","+p.getAge());
  39. return "index";//注意,容器自动将此处的person提交给视图层了
  40. }
  41. //以上都无需加参数注解
  42. //5.List http://localhost:8080/SpringMVCDemo/model2/m5?list=aa&list=bb
  43. @RequestMapping("m5")
  44. public String m5(@RequestParam List list){
  45. System.out.println(list.size());
  46. System.out.println(list);//[aa, bb]
  47. return "index";
  48. }
  49. //6.Map http://localhost:8080/SpringMVCDemo/model2/m6?k1=aaa&k2=bbb&k3=ccc
  50. @RequestMapping("m6")
  51. public String m6(@RequestParam Map map){
  52. System.out.println(map);//{k1=aaa, k2=bbb, k3=ccc}
  53. return "index";
  54. }
  55. //7.自定义复合对象类型,避免如5,6那样加注解,可以在entity中写一个CollectionVO封装
  56. //http://localhost:8080/SpringMVCDemo/model2/m7?list=aa&list=bb&map%5Bk1%5D=value1
  57. @RequestMapping("m7")
  58. public String m7(CollectionVO collectionVO){
  59. System.out.println(collectionVO.getList().size());//2
  60. //传map时,本来只用写map[k1]=value,但直接将中括号写在地址栏不解析,而应该写
  61. //左中括号%5B 右中括号%5D
  62. System.out.println(collectionVO.getMap());//{k1=value1}
  63. return "index";
  64. }
  65. //8.日期参数的处理,默认传参时是斜杠的形式 yyyy/MM/dd HH:mm:ss
  66. //http://localhost:8080/SpringMVCDemo/model2/m8?date=2018/8/8 20:30:59
  67. @RequestMapping("m8")
  68. public String m8(Date date){
  69. System.out.println(date);//Wed Aug 08 20:30:59 CST 2018
  70. return "index";
  71. }
  72. //9.自定义日期参数格式
  73. //http://localhost:8080/SpringMVCDemo/model2/m9?date=2018-8-8 20:30:59
  74. @RequestMapping("m9")
  75. public String m9(@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date date){
  76. //单纯加上述注解不起作用,还要补充一下注解驱动内容,详见springMVC-servlet.xml
  77. System.out.println(date);//Wed Aug 08 20:30:59 CST 2018
  78. return "index";
  79. }
  80. }

自定义日期参数格式时,在springMVC-servlet.xml中加如下配置:

  1. <!-- 自定义日期参数格式补充注解驱动内容 -->
  2. <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
  3. <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

CollectionVO.java

  1. package com.entity;
  2. import java.util.List;
  3. import java.util.Map;
  4. public class CollectionVO {
  5. private List list;
  6. private Map map;
  7. public List getList() {
  8. return list;
  9. }
  10. public void setList(List list) {
  11. this.list = list;
  12. }
  13. public Map getMap() {
  14. return map;
  15. }
  16. public void setMap(Map map) {
  17. this.map = map;
  18. }
  19. }

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读