【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!
相关推荐
皮皮林5511 小时前
SpringBoot 加载外部 Jar,实现功能按需扩展!
java·spring boot
rocksun2 小时前
认识Embabel:一个使用Java构建AI Agent的框架
java·人工智能
Java中文社群3 小时前
AI实战:一键生成数字人视频!
java·人工智能·后端
王中阳Go3 小时前
从超市收银到航空调度:贪心算法如何破解生活中的最优决策谜题?
java·后端·算法
shepherd1113 小时前
谈谈TransmittableThreadLocal实现原理和在日志收集记录系统上下文实战应用
java·后端·开源
维基框架3 小时前
Spring Boot 项目整合Spring Security 进行身份验证
java·架构
考虑考虑4 小时前
feign异常处理
spring boot·后端·spring
日月星辰Ace4 小时前
Java JVM 垃圾回收器(四):现代垃圾回收器 之 Shenandoah GC
java·jvm
可丷乐5 小时前
学习笔记-spring core
spring
天天摸鱼的java工程师5 小时前
商品详情页 QPS 达 10 万,如何设计缓存架构降低数据库压力?
java·后端·面试