• SpringMVC(二)@RequestMapping注解


    我们先新建一个Module。

    我们的依赖如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. "http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. 4.0.0
    6. com.rgf
    7. Spring_mvc_demo
    8. 1.0-SNAPSHOT
    9. war
    10. 8
    11. 8
    12. UTF-8
    13. org.springframework
    14. spring-webmvc
    15. 5.3.1
    16. ch.qos.logback
    17. logback-classic
    18. 1.2.3
    19. javax.servlet
    20. javax.servlet-api
    21. 3.1.0
    22. provided
    23. org.thymeleaf
    24. thymeleaf-spring5
    25. 3.0.12.RELEASE

    通过此处我们来进行导入web.xml:

    导入的web.xml如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. "http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. SpringMVC
    7. org.springframework.web.servlet.DispatcherServlet
    8. contextConfigLocation
    9. classpath:springmvc.xml
    10. 1
    11. SpringMVC
    12. /

     之后我们来进行创建配置文件:springmvc-config.xml:

    1. "1.0" encoding="UTF-8"?>
    2. "http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/c"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. package="com.rgf.controller">
    6. "viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    7. "order" value="1"/>
    8. "characterEncoding" value="UTF-8"/>
    9. "templateEngine">
    10. "org.thymeleaf.spring5.SpringTemplateEngine">
    11. "templateResolver">
    12. "org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    13. "prefix" value="/WEB-INF/templates/"/>
    14. "suffix" value=".html"/>
    15. "templateMode" value="HTML5"/>
    16. "characterEncoding" value="UTF-8" />

    我们创建的controller如下所示:

    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. @Controller
    4. public class TestRequestMappingController {
    5. }
    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. @Controller
    5. public class ProtalController {
    6. @RequestMapping("/")
    7. public String protal(){
    8. return "index";
    9. }
    10. }

    之后根据web.xml的配置文件,我们将该目录创建出来:且该目录下的文件为index.html

    1. "en" xmlns:th="http://www.thymeleaf.org">
    2. "UTF-8">
    3. 首页
    4. index.html

    完成之后,我们来进行配置:

     3.1 @RequestMapping注解的功能

    从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

    SpringMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。

    3.2@RequestMapping注解的位置

    @RequestMapping标识一个类:设置映射请求的请求路径的初始信息

    @RequestMapping标识一个方法:设置映射请求请求路径的具体信息

    @Target:当前注解能够标识的位置

    当我们标记到方法的时候:

    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. @RequestMapping("/test")
    5. @Controller
    6. public class TestRequestMappingController {
    7. @RequestMapping("/hello")
    8. public String hello(){
    9. return "success";
    10. }
    11. }

     我们可以根据该具体方法,跳转到具体方法标识的具体页面:

    1. "en" xmlns:th="http://www.thymeleaf.org">
    2. "UTF-8">
    3. 首页
    4. success.html

    我们将该注解放到类里面的时候:

    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. @RequestMapping("/test")
    5. @Controller
    6. public class TestRequestMappingController {
    7. @RequestMapping("/hello")
    8. public String hello(){
    9. return "success";
    10. }
    11. }

    此时我们再进行部署运行的时候,发现它无法进行跳转:

    此时的路径为类里面的路径和方法里面的路径进行拼接起来的路径。

    当我们在两个控制层下面没有在类的里面采用注解区分相同的路径的方法时则会直接报错

    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. /**
    5. * @RequestMapping注解的位置
    6. * @RequestMapping标识一个类:设置映射请求的请求路径的初始信息
    7. * @RequestMapping标识一个方法:设置映射请求请求路径的具体信息
    8. */
    9. //@RequestMapping("/test")
    10. @Controller
    11. public class TestRequestMappingController {
    12. //此时控制器方法所匹配的请求的请求路径为/test/hello
    13. @RequestMapping("/hello")
    14. public String hello(){
    15. return "success";
    16. }
    17. }
    1. package com.rgf.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. @Controller
    5. public class ProtalController {
    6. @RequestMapping("/")
    7. public String protal(){
    8. return "index";
    9. }
    10. @RequestMapping("/hello")
    11. public String hello(){
    12. return "success";
    13. }
    14. }

    此时就体现出用@RequestMapping在类里面进行注解的重要性。

     3.3@RequestMapping注解的value属性:

    我们可以看到value属性是一个数组类型的。我们查看如下所示:

    
    
  • 相关阅读:
    vue3探索——5分钟快速上手大菠萝pinia
    1110:查找特定的值
    传输层TCP协议
    【网络】IP、子网掩码
    Oracle归档日志暴增排查优化
    vue中axios的使用方法
    顾客餐馆点菜
    UVC Camera视频数据流程代码分析
    PyQt 定义控件SwitchButton 指南
    逆向破解之破解补丁与劫持Dll
  • 原文地址:https://blog.csdn.net/weixin_59448049/article/details/133470775