【SpringMVC 入门介绍】

文章目录

  • 前言
  • [一、SpringMVC 是什么?](#一、SpringMVC 是什么?)
  • [二、SpringMVC 的核心组件](#二、SpringMVC 的核心组件)
  • [三、SpringMVC 的运行流程](#三、SpringMVC 的运行流程)
  • [四、SpringMVC 快速入门示例](#四、SpringMVC 快速入门示例)
    • [1. 项目结构示例(Maven 工程)](#1. 项目结构示例(Maven 工程))
    • [2. 配置 `web.xml`](#2. 配置 web.xml)
    • [3. 配置 `springmvc.xml`](#3. 配置 springmvc.xml)
    • [4. 编写 Controller 类](#4. 编写 Controller 类)
    • [5. 编写视图 `hello.jsp`](#5. 编写视图 hello.jsp)
  • 五、测试效果

前言

SpringMVC 是 Spring Framework 的一个模块,它基于 MVC(Model-View-Controller)架构模式,提供了 Web 应用开发的结构性解决方案。通过注解驱动方式,开发者可以快速构建高效、可维护的 Web 应用。


一、SpringMVC 是什么?

SpringMVC 是 Spring Framework 提供的一套 Web 层解决方案,用于处理 HTTP 请求、响应并进行数据展示。它实现了 MVC 设计模式,将 Web 开发分为以下几个层次:

  • Model(模型层):封装业务数据
  • View(视图层):展示数据,如 JSP、Thymeleaf
  • Controller(控制层):接收请求、调用业务逻辑并返回视图

二、SpringMVC 的核心组件

组件 描述
DispatcherServlet 前端控制器,统一请求入口
HandlerMapping 根据请求 URL 匹配对应的处理器
HandlerAdapter 调用具体的 Controller 处理方法
Controller 编写业务逻辑的类
ViewResolver 将逻辑视图名解析为具体视图
View 最终呈现结果(JSP、HTML)

三、SpringMVC 的运行流程

  1. 用户发起请求,DispatcherServlet 拦截
  2. DispatcherServlet 调用 HandlerMapping 找到对应的 Handler(控制器)
  3. 通过 HandlerAdapter 执行对应 Controller 方法
  4. Controller 返回 ModelAndView 对象
  5. DispatcherServlet 调用 ViewResolver 解析视图
  6. 返回最终视图给浏览器

示意图如下:

复制代码
浏览器 -> DispatcherServlet -> HandlerMapping -> Controller -> ViewResolver -> View -> 浏览器

四、SpringMVC 快速入门示例

1. 项目结构示例(Maven 工程)

复制代码
springmvc-demo
├── src
│   └── main
│       ├── java
│       │   └── com.example.controller.HelloController
│       └── webapp
│           ├── WEB-INF
│           │   ├── web.xml
│           │   └── views/hello.jsp
│           └── index.jsp

2. 配置 web.xml

xml 复制代码
<web-app>
  <servlet>
    <servlet-name>springDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springDispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

3. 配置 springmvc.xml

xml 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="...">

    <!-- 开启注解驱动 -->
    <mvc:annotation-driven />

    <!-- 扫描 Controller 包 -->
    <context:component-scan base-package="com.example.controller" />

    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

4. 编写 Controller 类

java 复制代码
package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public ModelAndView sayHello() {
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg", "Hello SpringMVC!");
        return mv;
    }
}

5. 编写视图 hello.jsp

jsp 复制代码
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>Hello</title></head>
<body>
  <h2>${msg}</h2>
</body>
</html>

五、测试效果

启动服务器(如 Tomcat),访问:

复制代码
http://localhost:8080/hello

页面应显示:

复制代码
Hello SpringMVC!
相关推荐
月亮不月亮17 分钟前
月亮商场购物打折Java
java·eclipse
moxiaoran575319 分钟前
Springboot+MongoDB简单使用示例
spring boot·mongodb·spring
guozhetao27 分钟前
【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
java·c++·python·算法·leetcode·深度优先·图论
技术思考者27 分钟前
基础很薄弱如何规划考研
java·经验分享·考研
●VON1 小时前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
老华带你飞1 小时前
口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·论文·毕设·口腔小程序
hqxstudying1 小时前
J2EE模式---服务层模式
java·数据库·后端·spring·oracle·java-ee
GM_8281 小时前
【最新最完整】SpringAI-1.0.0开发MCP Server,搭建MCP Client 实战笔记(进阶+详细+完整代码)
java·后端·ai编程·springai·mcp
都叫我大帅哥1 小时前
Java DelayQueue:时间管理大师的终极武器
java
秋千码途1 小时前
小架构step系列27:Hibernate提供的validator
java·spring·架构·hibernate