【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!
相关推荐
板板正几秒前
SpringAI——向量存储(vector store)
java·spring boot·ai
野生技术架构师6 分钟前
Spring Boot 定时任务与 xxl-job 灵活切换方案
java·spring boot·后端
苹果醋31 小时前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx
你怎么知道我是队长1 小时前
C语言---编译的最小单位---令牌(Token)
java·c语言·前端
Elieal2 小时前
Java 链表完全指南:从基础到力扣简单题实战
java·leetcode·链表
寒士obj2 小时前
SpringBoot中的条件注解
java·spring boot·后端
pengzhuofan2 小时前
Java设计模式-外观模式
java·设计模式·外观模式
Emrys_2 小时前
AQS 深入解析
java
abigalexy2 小时前
深入图解Spring Cloud底层设计
spring·spring cloud
超级小忍3 小时前
从零开始:JDK 在 Windows、macOS 和 Linux 上的下载、安装与环境变量配置
java·windows·macos