• Spring-mvc的参数传递与常用注解的解答及页面的跳转方式---综合案例


    目录

    一.slf4j--日志

    二.常用注解

           2.1.@RequestMapping

          2.2.@RequestParam

          2.3.@RequestBody

          2.4.@PathVariable

    三.参数的传递

    3.1 基础类型

    3.2 复杂类型

    3.3 @RequestParam

    3.4  @PathVariable

    3.5 @RequestBody

    3.6 增删改查 

    四.返回值 

              4.1 void 返回值 

     4.2 String 返回值

     4.3 model+String  ​编辑

    五.页面跳转 --转发和重定向


    一.slf4j--日志

            SLF4J(Simple Logging Facade for Java)是Java应用程序中常用的日志记录框架。日志是记录应用程序运行时产生的事件、错误和信息的一种机制。用日志打印代替sout打印

            使用SLF4J可以带来以下好处:

    1. 统一接口:SLF4J提供了一套简单的、统一的API来进行日志记录,开发人员无需关心具体使用哪个日志实现,只需与SLF4J进行交互即可。

    2. 基于级别的日志记录:SLF4J支持不同的日志级别(如DEBUG、INFO、WARN、ERROR等),可以根据需要设置不同的级别来记录日志。这对于应用程序的调试和故障排查非常有用。

    3. 日志格式化:SLF4J支持灵活的日志格式化选项,可以自定义日志的输出格式,例如添加时间戳、线程信息等。

    4. 运行时动态切换日志实现:SLF4J允许在运行时动态地切换使用的日志实现,这使得应用程序可以灵活地适应不同的部署环境和需求。

    二.常用注解

            2.1.@RequestMapping

            @RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。

            2.2.@RequestParam

            @RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上

          2.3.@RequestBody

            @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(即请求体中的数据的

            GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

          2.4.@PathVariable

            该注解请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定。

            即当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

    三.参数的传递

            先来在pom.xml配置文件中导入SLF4J的依赖

    1. <log4j2.version>2.9.1</log4j2.version>
    2. <log4j2.disruptor.version>3.2.0</log4j2.disruptor.version>
    3. <slf4j.version>1.7.13</slf4j.version>
    4. <!--4.log日志相关依赖-->
    5. <!-- log4j2日志相关依赖 -->
    6. <!-- log配置:Log4j2 + Slf4j -->
    7. <!-- slf4j核心包-->
    8. <dependency>
    9. <groupId>org.slf4j</groupId>
    10. <artifactId>slf4j-api</artifactId>
    11. <version>${slf4j.version}</version>
    12. </dependency>
    13. <dependency>
    14. <groupId>org.slf4j</groupId>
    15. <artifactId>jcl-over-slf4j</artifactId>
    16. <version>${slf4j.version}</version>
    17. <scope>runtime</scope>
    18. </dependency>
    19. <!--核心log4j2jar包-->
    20. <dependency>
    21. <groupId>org.apache.logging.log4j</groupId>
    22. <artifactId>log4j-api</artifactId>
    23. <version>${log4j2.version}</version>
    24. </dependency>
    25. <dependency>
    26. <groupId>org.apache.logging.log4j</groupId>
    27. <artifactId>log4j-core</artifactId>
    28. <version>${log4j2.version}</version>
    29. </dependency>
    30. <!--用于与slf4j保持桥接-->
    31. <dependency>
    32. <groupId>org.apache.logging.log4j</groupId>
    33. <artifactId>log4j-slf4j-impl</artifactId>
    34. <version>${log4j2.version}</version>
    35. </dependency>
    36. <!--web工程需要包含log4j-web,非web工程不需要-->
    37. <dependency>
    38. <groupId>org.apache.logging.log4j</groupId>
    39. <artifactId>log4j-web</artifactId>
    40. <version>${log4j2.version}</version>
    41. <scope>runtime</scope>
    42. </dependency>
    43. <!--需要使用log4j2的AsyncLogger需要包含disruptor-->
    44. <dependency>
    45. <groupId>com.lmax</groupId>
    46. <artifactId>disruptor</artifactId>
    47. <version>${log4j2.disruptor.version}</version>
    48. </dependency>

    3.1 基础类型

    测试结果:

    3.2 复杂类型

    测试结果:

    3.3 @RequestParam

     
    

     测试结果:

    3.4  @PathVariable

     
    

     测试结果:

    3.5 @RequestBody

            在使用这个注解的时候我们还需要配置pom.xml文件,导入json的格式

    1. <jackson.version>2.9.3</jackson.version>
    2. <dependency>
    3. <groupId>com.fasterxml.jackson.core</groupId>
    4. <artifactId>jackson-databind</artifactId>
    5. <version>${jackson.version}</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.fasterxml.jackson.core</groupId>
    9. <artifactId>jackson-core</artifactId>
    10. <version>${jackson.version}</version>
    11. </dependency>
    12. <dependency>
    13. <groupId>com.fasterxml.jackson.core</groupId>
    14. <artifactId>jackson-annotations</artifactId>
    15. <version>${jackson.version}</version>
    16. </dependency>
     
    

     这个地方需要借助一个测试软件传参数,我用的是Eolink

     

    3.6 增删改查 

     @RequestMapping=@PostMapping+@GetMapping+@DeleteMapping+@PutMapping

    1. @PutMapping //修改
    2. public String test2(){
    3. log.info("PutMapping修改");
    4. return "index";
    5. }
    6. @DeleteMapping //删除
    7. public String test3(){
    8. log.info("DeleteMapping删除");
    9. return "index";
    10. }
    11. @GetMapping //查询
    12. public String test4(){
    13. log.info("GetMapping查询");
    14. return "index";
    15. }
    16. @PostMapping //新增
    17. public String test5(){
    18. log.info("PostMapping新增");
    19. return "index";
    20. }

    -----既然RequestMapping可以代替所有为什么不用它??
    -----因为RequestMapping不安全,并且不具备标识意义

     如果没有选择请求方式那么,就会选择get方式,调用查询的方法

     

    只有当我们选择的时候,它才会指定调用

     

    四.返回值 

            4.1 void 返回值 

            处理器对请求处理后,无需跳转到其它任何资源,此时可以让处理器方法返回 void。

     

    测试结果:

     

     4.2 String 返回值

     

    4.3 model+String  

    测试结果:

     

    五.页面跳转 --转发和重定向

             转发和重定向的实现方式有所不同。转发是在服务器端进行处理,服务器接收到用户的请求后,将请求转发到另一个URL,并将响应返回给用户。重定向是通过发送特定的HTTP响应代码来告诉浏览器将用户的请求重定向到另一个URL,浏览器接收到重定向响应后,会自动发送新的请求到重定向的URL。

            使用场景方面,转发适用于需要在服务器端进行一些处理后,将请求转发到其他页面或处理逻辑的情况。转发可以保持用户的URL不变,用户在浏览器中看到的URL仍然是原始的URL。重定向适用于需要将用户导航到其他页面或处理逻辑的情况,重定向会导致浏览器发送新的请求到重定向的URL,并在浏览器的地址栏中显示新的URL。 增删改都是用重定向

  • 相关阅读:
    C++ 用sort和unique实现数据的去重
    Java中使用redis的bitMap实现签到功能
    C#使用 WebView2 替代 Electron/Tauri 之 Web 核心
    数学_矩阵向量求导公式相关
    17.2 实现无管道正向CMD
    面试--spring基础
    GIT 工具使用
    NFC技术的定义通信方式
    多项式学习笔记
    什么是CS资质认证
  • 原文地址:https://blog.csdn.net/YZZdear/article/details/132688710