我们先新建一个Module。
我们的依赖如下所示:
- "1.0" encoding="UTF-8"?>
"http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
4.0.0 -
-
com.rgf -
Spring_mvc_demo -
1.0-SNAPSHOT -
war -
-
-
-
8 -
8 -
UTF-8 -
-
-
-
-
-
-
org.springframework -
spring-webmvc -
5.3.1 -
-
-
-
ch.qos.logback -
logback-classic -
1.2.3 -
-
-
-
-
javax.servlet -
javax.servlet-api -
3.1.0 -
provided -
-
-
-
-
org.thymeleaf -
thymeleaf-spring5 -
3.0.12.RELEASE -
-
-
-
通过此处我们来进行导入web.xml:

导入的web.xml如下所示:
- "1.0" encoding="UTF-8"?>
"http://xmlns.jcp.org/xml/ns/javaee" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
- version="4.0">
-
-
-
-
SpringMVC -
org.springframework.web.servlet.DispatcherServlet -
-
-
-
contextConfigLocation -
classpath:springmvc.xml -
-
-
1 -
-
-
-
SpringMVC -
/ -
-
之后我们来进行创建配置文件:springmvc-config.xml:
- "1.0" encoding="UTF-8"?>
"http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/c"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-
-
package="com.rgf.controller"> -
-
-
"viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> -
"order" value="1"/> -
"characterEncoding" value="UTF-8"/> -
"templateEngine"> -
"org.thymeleaf.spring5.SpringTemplateEngine"> -
"templateResolver"> -
"org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> -
-
-
-
"prefix" value="/WEB-INF/templates/"/> -
-
"suffix" value=".html"/> -
"templateMode" value="HTML5"/> -
"characterEncoding" value="UTF-8" /> -
-
-
-
-
我们创建的controller如下所示:
- package com.rgf.controller;
-
- import org.springframework.stereotype.Controller;
-
- @Controller
- public class TestRequestMappingController {
-
- }
- package com.rgf.controller;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
-
- @Controller
- public class ProtalController {
- @RequestMapping("/")
- public String protal(){
- return "index";
- }
- }
之后根据web.xml的配置文件,我们将该目录创建出来:且该目录下的文件为index.html
- "en" xmlns:th="http://www.thymeleaf.org">
- "UTF-8">
-
首页 index.html
完成之后,我们来进行配置:

3.1 @RequestMapping注解的功能从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。
SpringMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。
@RequestMapping标识一个类:设置映射请求的请求路径的初始信息
@RequestMapping标识一个方法:设置映射请求请求路径的具体信息
@Target:当前注解能够标识的位置
当我们标记到方法的时候:
package com.rgf.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/test") @Controller public class TestRequestMappingController { @RequestMapping("/hello") public String hello(){ return "success"; } }我们可以根据该具体方法,跳转到具体方法标识的具体页面:
"en" xmlns:th="http://www.thymeleaf.org"> "UTF-8">首页 success.html
我们将该注解放到类里面的时候:
package com.rgf.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/test") @Controller public class TestRequestMappingController { @RequestMapping("/hello") public String hello(){ return "success"; } }此时我们再进行部署运行的时候,发现它无法进行跳转:
此时的路径为类里面的路径和方法里面的路径进行拼接起来的路径。
当我们在两个控制层下面没有在类的里面采用注解区分相同的路径的方法时则会直接报错
package com.rgf.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * @RequestMapping注解的位置 * @RequestMapping标识一个类:设置映射请求的请求路径的初始信息 * @RequestMapping标识一个方法:设置映射请求请求路径的具体信息 */ //@RequestMapping("/test") @Controller public class TestRequestMappingController { //此时控制器方法所匹配的请求的请求路径为/test/hello @RequestMapping("/hello") public String hello(){ return "success"; } }
package com.rgf.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ProtalController { @RequestMapping("/") public String protal(){ return "index"; } @RequestMapping("/hello") public String hello(){ return "success"; } }此时就体现出用@RequestMapping在类里面进行注解的重要性。
我们可以看到value属性是一个数组类型的。我们查看如下所示: