【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!
相关推荐
这周也會开心24 分钟前
Spring-MVC响应
java·spring·mvc
程序员学习随笔30 分钟前
C++ 性能优化:用 CRTP 实现零开销编译期多态
java·c++
ByteBlossom40 分钟前
依赖注入面试题分析—Spring面经系列(一)
java·spring
编程岁月42 分钟前
java面试0106-java什么时候会出现i>i+1和i<i-1?
java·开发语言·面试
练习时长一年2 小时前
Java开发者进阶之路
java·开发语言
SunnyDays10112 小时前
Java 高效实现 PowerPoint 转 PDF:不依赖Office
java·ppt转pdf·powerpoint转pdf·pptx转pdf·幻灯片转pdf
ganshenml3 小时前
【Android】两个不同版本的jar放进一个工程打成aar会有问题么?
android·java·jar
灰什么鱼3 小时前
项目同时打war和jar两种包
java·jar
爱隐身的官人3 小时前
Linux配置Java/JDK(解决Kali启动ysoserial.jar JRMPListener报错)暨 Kali安装JAVA8和切换JDK版本的详细过程
java·linux·kali