• SpringMVC-请求


    目录

    请求普通参数

    POJO类型参数

    数组类型参数

    集合类型参数

    类型转换器

    实例

    请求映射

    @RequestMapping属性


    • 请求普通参数

    • SpringMvc将传递的参数封装到处理器方法的形参中,达到快速访问参数的目的
    • 先来测试一下

      1. <servlet>
      2. <servlet-name>DispatcherServletservlet-name>
      3. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
      4. <init-param>
      5. <param-name>contextConfigLocationparam-name>
      6. <param-value>classpath*:spring-mvc.xmlparam-value>
      7. init-param>
      8. servlet>
      9. <servlet-mapping>
      10. <servlet-name>DispatcherServletservlet-name>
      11. <url-pattern>/url-pattern>
      12. servlet-mapping>
      1. <context:component-scan base-package="com.superdemo">
      2. <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      3. context:component-scan>
    • 然后开始试试传参

    • 请求参数类型
    • 普通类型参数
    • POJO类型参数
    • 数组类型参数
    • 集合类型参数
    • 普通类型参数
    • 参数名与处理器方法形参名保持一致
    • 参数设定
    • 名称:@RequestParam
    • 类型:形参注解
    • 位置:处理器类中的方法形参前方
    • 作用:绑定请求参数与对应处理方法形参间的关系
    • 范例:
    • @RequestMapping ("/requestParam2")
    • public String requestParam2(@RequestParam(
      • name = "userName", //地址请求参数
      • required = true, //是否强制要求填写
      • defaultValue = "icpc" //默认值
    • )String name){
    • System.out.println ("name="+name) ;
    • return "page.jsp";}
    • 访问路径:/requestParam2/userName=ccpc

      1. @Controller
      2. public class UserController {
      3. //http://localhost:8080/springmvc_demo4_war/requestParam1?name=icpc
      4. //http://localhost:8080/springmvc_demo4_war/requestParam1?name=icpc&age=19
      5. @RequestMapping("/requestParam1")
      6. public String requestParam1(String name,int age){
      7. System.out.println(name+","+age);
      8. return "page.jsp";
      9. }
      10. //http://localhost:8080/springmvc_demo4_war/requestParam2?userName=tj
      11. @RequestMapping("/requestParam2")
      12. public String requestParam2(@RequestParam("userName")String name){
      13. System.out.println(name);
      14. return "page.jsp";
      15. }
      16. }
    • POJO类型参数

    • 当POJO中使用简单类型属性时,参数名称与POJO类属性名保持一致

    • 参数冲突
    • 当POJO类型属性与其他形参出现同名问题时,将被同时赋值

    • 建议使用@RequestParam注解进行区分
    • 复杂POJO类型参数
    • 当POJO中出现对象属性时,参数名称与对象层次结构名称保持一致

    • 当POJO中出现集合,保存简单数据,使用多个相同名称的参数为其进行赋值

    • 当POJO中出现List,保存对象数据,参数名称与对象层次结构名称保持一致,使用数组格式描述集合中对象的位置

    • 当POJO中出现Map,保存对象数据,参数名称与对象层次结构名称保持一致,使用映射格式描述集合中对象的位置

      1. //http://localhost:8080/springmvc_demo4_war/requestParam3?name=tj&age=19
      2. @RequestMapping("/requestParam3")
      3. public String requestParam3(User user,int age){
      4. System.out.println("user="+user+",age="+age);
      5. return "page.jsp";
      6. }
      7. //http://localhost:8080/springmvc_demo4_war/requestParam4?address.city=beijing
      8. @RequestMapping("/requestParam4")
      9. public String requestParam4(User user){
      10. System.out.println(user.getAddress().getCity());
      11. return "page.jsp";
      12. }
      13. //http://localhost:8080/springmvc_demo4_war/requestParam5?nick=icpc&nick=acm&nick=ccpc
      14. @RequestMapping("/requestParam5")
      15. public String requestParam5(User user){
      16. System.out.println(user);
      17. return "page.jsp";
      18. }
      19. //http://localhost:8080/springmvc_demo4_war/requestParam6?addresses%5b0%5d.city=beijing&addresses%5b1%5d.province=hebei
      20. @RequestMapping("/requestParam6")
      21. public String requestParam6(User user){
      22. System.out.println(user.getAddresses());
      23. return "page.jsp";
      24. }
      25. //http://localhost:8080/springmvc_demo4_war/requestParam7?addressMap%5b%27job%27%5d.city=beijing&addressMap%5b%27home%27%5d.province=hunan
      26. @RequestMapping("/requestParam7")
      27. public String requestParam7(User user){
      28. System.out.println(user.getAddressMap());
      29. return "page.jsp";
      30. }
    • 数组类型参数

    • 请求参数名与处理器方法形参名保持一致,且请求参数数量>1个

    • 集合类型参数

    • 保存简单类型数据,请求参数名与处理器方法形参名保持一致,且请求参数数量>1个
    • 注意:springMVC默认将List作为对象处理,赋值前先创建对象,然后将nick作为对象的属性进行处理
    • 由于List是接口,无法创建对象,报无法找到构造方法异常;
    • 修复类型为可创建对象的ArrayList类型后,对象可以创建,但没有nick属性,因此数据为空
    • 此时需要告知springMVC的处理器nick是一组数据,而不是一个单一数据
    • 通过@RequestParam注解,将数量大于1个names参数打包成参数数组后,springMVC才能识别该数据格式,并判定形参类型是否为数组或集合,并按数组或集合对象的形式操作数据

    • 类型转换器

    • SpringMVC对接收的数据进行自动类型转换,该工作通过Converter接口实现
    • 日期类型格式转换(简化版)
    • 名称:@DateTimeFormat
    • 类型:形参注解、成员变量注解
    • 位置:形参前面 或 成员变量上方
    • 作用:为当前参数或变量指定类型转换规则
    • 注意:
    • 需要依赖注解驱动支持
    • 实例

      1. @Controller
      2. public class UserController {
      3. //http://localhost:8080/springmvc_demo4_war/requestParam1?name=icpc
      4. //http://localhost:8080/springmvc_demo4_war/requestParam1?name=icpc&age=19
      5. @RequestMapping("/requestParam1")
      6. public String requestParam1(String name,int age){
      7. System.out.println(name+","+age);
      8. return "page.jsp";
      9. }
      10. //http://localhost:8080/springmvc_demo4_war/requestParam2?userName=tj
      11. @RequestMapping("/requestParam2")
      12. public String requestParam2(@RequestParam("userName")String name){
      13. System.out.println(name);
      14. return "page.jsp";
      15. }
      16. //http://localhost:8080/springmvc_demo4_war/requestParam3?name=tj&age=19
      17. @RequestMapping("/requestParam3")
      18. public String requestParam3(User user,int age){
      19. System.out.println("user="+user+",age="+age);
      20. return "page.jsp";
      21. }
      22. //http://localhost:8080/springmvc_demo4_war/requestParam4?address.city=beijing
      23. @RequestMapping("/requestParam4")
      24. public String requestParam4(User user){
      25. System.out.println(user.getAddress().getCity());
      26. return "page.jsp";
      27. }
      28. //http://localhost:8080/springmvc_demo4_war/requestParam5?nick=icpc&nick=acm&nick=ccpc
      29. @RequestMapping("/requestParam5")
      30. public String requestParam5(User user){
      31. System.out.println(user);
      32. return "page.jsp";
      33. }
      34. //http://localhost:8080/springmvc_demo4_war/requestParam6?addresses%5b0%5d.city=beijing&addresses%5b1%5d.province=hebei
      35. @RequestMapping("/requestParam6")
      36. public String requestParam6(User user){
      37. System.out.println(user.getAddresses());
      38. return "page.jsp";
      39. }
      40. //http://localhost:8080/springmvc_demo4_war/requestParam7?addressMap%5b%27job%27%5d.city=beijing&addressMap%5b%27home%27%5d.province=hunan
      41. @RequestMapping("/requestParam7")
      42. public String requestParam7(User user){
      43. System.out.println(user.getAddressMap());
      44. return "page.jsp";
      45. }
      46. //http://localhost:8080/springmvc_demo4_war/requestParam8?nick=tj&nick=ccpc
      47. @RequestMapping("/requestParam8")
      48. public String requestParam8(String[] nick){
      49. System.out.println(nick[0]+","+nick[1]);
      50. return "page.jsp";
      51. }
      52. //http://localhost:8080/springmvc_demo4_war/requestParam9?nick=king&nick=icpc
      53. @RequestMapping("/requestParam9")
      54. public String requestParam9(@RequestParam("nick")List nick){
      55. System.out.println(nick);
      56. return "page.jsp";
      57. }
      58. @RequestMapping("/requestParam10")
      59. public String requestParam10(@DateTimeFormat(pattern = "yyyy-MM-dd")Date date){
      60. System.out.println(date);
      61. return "page.jsp";
      62. }
      63. }
    • 请求映射

    • 名称:@RequestMapping
    • 类型:方法注解
    • 位置:处理器类中的方法定义上方
    • 作用:绑定请求地址与对应处理方法间的关系
    • 名称:@RequestMapping
    • 类型:类注解
    • 位置:处理器类定义上方
    • 作用:为当前处理器中所有方法设定公共的访问路径前缀
    • 请求返回的页面地址默认为当前路径
    • 当设置了公共的访问前缀后,当前路径发生了变化,需要根据变化修改地址或修改访问页面的路径
    • @RequestMapping属性

    • 常用属性
    • value
    • method
    • 详细
    • @RequestMapping(
      • value="/requestURL3",
      • //设定请求路径,与path属性、value属性相同
      • method = RequestMethod.GET,
      • //设定请求方式
      • params = "name",
      • //设定请求参数条件
      • headers = "content-type=text/*",
      • //设定请求消息头条件
      • consumes = "text/*",
      • //用于指定可以接收的请求正文类型(MIME类型)
      • produces = "text/*",
      • //用于指定可以生成的响应正文类型(MIME类型)
      • )
    • public String requestURL3(){
    •      return "/page.jsp";
    • }
  • 相关阅读:
    【python学习】基础篇-常用函数-sorted() 对可迭代对象进行排序
    鸡防治球菌病的措施 鸡防球菌病抗菌的药
    springboot求职招聘系统java-php-python
    进销存商城前几名的运营方法|三招提高微信商城用户黏性
    Win2008 IIS TLS1.0升级到TLS1.2或TLS1.3
    [极客大挑战 2019]Upload--BUUCTF
    【Java每日一题】——第四十题:设计一个Shape接口和它的两个实现类Square和Circle(2023.10.26)
    【python百宝箱】抛开GIL束缚:线程、进程、异步实现高效编程
    解决git diff时的^M问题
    C++ 20 新特性简介
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/127596138