一文带你入门Spring MVC

it2026-04-21  4

1、需求明细

2、业务实现

2.1、部署环境

创建maven web工程(如果不会的话,请在下方留言,我来制作一期),添加如下依赖 — pom.xml

<!-- 版本锁定 --> <properties> <spring.version>5.0.2.RELEASE</spring.version> </properties> <dependencies> <!-- Spring Context 依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring Web 依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring Web MVC 依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- Servlet 依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!-- Jsp 依赖 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies>

配置前端控制器(本质上是一个Servlet) — web.xml

<!--配置前端控制器--> <servlet> <!--名称可自定义,通常为该类名首字母小写--> <servlet-name>dispatcherServlet</servlet-name> <!--配置前端控制器,此处固定不可随意修改--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <!--指代需要设置的Servlet对象,对应servlet-name--> <servlet-name>dispatcherServlet</servlet-name> <!--指定拦截路径--> <url-pattern>/</url-pattern> </servlet-mapping>

配置Spring MVC — SpringMVC.xml(需要在resource下手动创建)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> </beans>

基于当前编译器将所有的环境添加到WEB-INF/lib 目录中

2.2、 编写入门程序

请检查你的index.jsp 是否有类似如下代码,有则跳过,反之添加

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

创建HelloController 类(此类需要位于层级包下)

通常包名为公司或组织域名倒着写.项目名称.模块名称.类名

举例:

com.alibaba.hellospringmvc.controoler.HelloController /**. * 控制器类(通常是此注解第一行说明当前类的作用) * @author Typhoon Walking (作者名称) */ @Controller public class HelloController { /** * . * 创建一个测试的方法 */ // 基于RequestMapping注解,通过path设置访问路径 @RequestMapping(path = "/hello") public String sayHello() { System.out.println("Hello,Spring MVC"); return "success"; } }

设置包扫描器 — SpringMVC-config.xml

<context:component-scan base-package="控制器类所在的包位置"/>

路径通常写到其类的上二级目录,比如控制器类位于com.alibaba.controller.HelloController,则我们的包扫描器 base-package 属性的位置就是: com.alibaba;

加载配置文件,在servlet标签中,添加初始化参数 — web.xml

<!-- 设置初始化参数 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMVC-config.xml</param-value> </init-param> <!-- 设置每次启动加载配置文件 --> <load-on-startup>1</load-on-startup>

在WEB-INF目录下创建一个pages目录,创建一个 success.jsp文件,在body标签中,添加如下内容

<h3>入门成功</h3>

配置视图解析器 — SpringMVC-config.xml (beans 标签中)

<!--此处固定配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!-- 配置页面文件所在的位置 --> <property name="prefix" value="/WEB-INF/pages/"/> <!-- 配置页面文件后缀 --> <property name="suffix" value=".jsp"/> </bean>

开启Spring MVC 框架注解支持 — Spring MVC-config.xml(beans 标签中)

<!--配置Spring MVC 开启注解支持--> <mvc:annotation-driven/>

设置超链接,访问success页面,测试Spring MVC入门案例 — index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <h3>入门程序</h3> <!-- 此处href指向控制器类中测试方法上的@RequestMapping的path路径 --> <a href="hello"> 入门程序</a> </body> </html>

2.3、测试程序

将当前应用部署到tomcat 中

启动tomcat 即可通过访问index.jsp 点击超链接实现入门成功 ! ! !

2.4、图解Spring入门案例

2.5、入门案例的执行过程

当启动tomcat时,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件

开启注解扫描,那么HelloController对象就会被创建

从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法

根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定的JSP文件

tomcat服务器渲染页面,做出相应

BUG分析:

1.

请检查自己的请求路径是否配置正确

依赖库是否上传到WEB-INF/lib 目录下

是否缺少相关注解

依赖库是否完善

错误详情:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/dispatcherServlet-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/dispatcherServlet-servlet.xml]

错误分析:

错误显示不能从 WEB-INF下读取dispatcherServlet-servlet.xml ,应该是文件在读取时出现问题

解决方案:

请检查Spring MVC 配置文件初始化是否正确

Spring mvc 配置文件存放目录是否正确

最新回复(0)