Java-Spring入门指南(十四)SpringMVC项目实战搭建
前言
- 在上一篇博客中,我们系统学习了SpringMVC的核心流程与组件分工,明确了DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)等组件的协作逻辑。
- 理论之后更需实践,如何从0到1搭建一个可运行的SpringMVC项目,如何将核心组件配置落地,是本次实战的核心目标。
- 本文将基于Maven+IDEA+Tomcat 11环境,一步步完成SpringMVC项目的搭建、配置与运行,让你直观感受“理论”到“实战”的转化过程。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Java-Spring入门指南知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13040333.html?spm=1001.2014.3001.5482

一、首先导入我们的Maven
我的maven如何导入相关的博客
https://blog.csdn.net/2402_83322742/article/details/145998804
导入好之后的样子
二、接着导入SpringMVC相关的包
<!-- 1. SpringMVC核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.2.10</version>
</dependency>
- 作用:包含SpringMVC的所有核心功能,如
DispatcherServlet、@Controller注解、视图解析器等,是项目的“基石”。
<!-- 2. Servlet API依赖 -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>provided</scope>
</dependency>
- 作用:SpringMVC基于Servlet规范运行,需依赖
HttpServletRequest、HttpServlet等接口;scope=provided表示该依赖由Tomcat等Servlet容器提供,无需打包到项目中。
<!-- 3. JSP视图依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
- 作用:若使用JSP作为视图技术(如本次实战),需该依赖支持JSP语法解析;同样
scope=provided,由Tomcat提供。
<!-- 4. 代码简化工具(Lombok) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
</dependency>
- 作用:自动生成Java类的
getter/setter、构造方法等,减少冗余代码,提升开发效率(非SpringMVC必需,但推荐使用)。
<!-- 5. 单元测试框架(JUnit 4) -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
- 作用:用于编写自动化测试用例,验证Controller、Service等组件的逻辑;
scope=test表示仅在测试环境生效。
三、创建Servlet_web环境
-
首先需要创建一个项目,然后我们在项目里添加模板



-
创建完模板之后加入web环境
-
右击我们的刚创建好的模板,打开模板设置

-
找到springMVC,并且点击+号,创建web文件



- 点击右下角的创建工件

- 然后在WEB-INF文件下创建一个lib文件夹

单击lib文件夹,导入所有的库文件


- 然后再WEB-INF文件下创建jsp文件夹并在jsp文件夹下创建hello.jsp项目

并在里面加入jsp代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SpringMVC测试</title>
</head>
<body>
<!-- 接收Controller传递的msg数据并展示 -->
${msg}
</body>
</html>
- 然后创建com.niit.controller包,并在包里创建HelloController.java代码

public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("msg", "hello springmvc");
mv.setViewName("hello");
return mv;
}
}
代码核心逻辑解释
ModelAndView:是Controller的返回结果,同时包含“模型数据”(给视图的数- 据)和“视图名称”(要渲染的视图)。addObject("msg", "hello springmvc"):将数据存入模型,JSP页面可通过${msg}获取该值。setViewName("hello"):指定逻辑视图名为“hello”,后续视图解析器会将其拼接为/WEB-INF/jsp/hello.jsp(物理路径)。
(1)配置springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- handler-->
<bean id="/hello" class="com.niit.controller.HelloController"></bean>
</beans>
-
处理器映射器(BeanNameUrlHandlerMapping):
- 作用:根据Bean的
id(URL路径)匹配Controller,例如id="/hello"对应处理http://localhost:8080/hello请求。
- 作用:根据Bean的
-
处理器适配器(SimpleControllerHandlerAdapter):
- 作用:适配“实现Controller接口的控制器”,调用其
handleRequest方法处理请求(若使用注解式Controller,需配置其他适配器)。
- 作用:适配“实现Controller接口的控制器”,调用其
-
视图解析器(InternalResourceViewResolver):
- 作用:将逻辑视图名转为物理视图路径,例如“hello”→
prefix + "hello" + suffix→/WEB-INF/jsp/hello.jsp。
- 作用:将逻辑视图名转为物理视图路径,例如“hello”→
-
Handler(Controller)配置:
- 作用:将
HelloController注册为Spring Bean,id="/hello"指定其处理的URL路径。

- 作用:将
(2)配置web.xml里面的中央处理器
DispatcherServlet是SpringMVC的“前端控制器”,所有HTTP请求都会先经过它,需在web.xml(位于webapp/WEB-INF目录下)中配置。
<!-- 配置中央处理器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

(3)为什么需要配置前端控制器?
- 统一请求入口:所有请求先经过
DispatcherServlet,避免为每个Controller单独配置Servlet(解决传统Servlet开发的“配置爆炸”问题)。 - 协调组件工作:
DispatcherServlet会自动查找并调用HandlerMapping、HandlerAdapter、ViewResolver等组件,无需手动关联。 - 初始化配置:通过
init-param指定springmvc.xml的路径,让DispatcherServlet加载SpringMVC的组件配置。
五、配置最新的tomcat 11
tomcat官方网站
https://tomcat.apache.org/


- 然后下载最新的tomcat11,并配置到我们的IDEA系统中


然后将服务器里面的URL改为http://localhost:8080/hello
并且部署里面的应用程序上下文改为/


六、运行项目
点击运行,如果直接显示hello springmvc则项目构建成功

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Java-Spring入门指南知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13040333.html?spm=1001.2014.3001.5482
| 非常感谢您的阅读,喜欢的话记得三连哦 |

转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2402_83322742/article/details/152268810





