当前位置: 首页 > article >正文

Spring MVC 配置详解与入门案例

目录

引言

一、Spring MVC 的发展背景

1. Model I 与 Model II

2. MVC 模式

二、Spring MVC 入门案例

1. 创建 WEB 工程并引入依赖

2. 配置 web.xml

3. 配置 springmvc.xml

4. 创建控制器和视图

5. 部署并测试

三、Spring MVC 原理

1. 核心组件

2. 请求处理流程

总结


引言

        在 Java Web 开发的历史长河中,Spring MVC 作为一款强大的框架,以其简洁的配置和高效的处理机制赢得了广大开发者的青睐。本文将带您深入了解 Spring MVC 的配置过程,并通过一个完整的入门案例,帮助您快速掌握其核心要点。

一、Spring MVC 的发展背景

1. Model I 与 Model II

  • Model I:JSP + JavaBean 的开发模式,JSP 页面直接整合业务逻辑和视图展示,导致代码耦合度高,维护困难。

  • Model II:引入 Servlet 作为控制器,JSP 负责视图展示,JavaBean 处理业务逻辑,实现了职责分工,更适合大型项目开发。

2. MVC 模式

        MVC(Model-View-Controller)是一种经典的设计模式,将应用分为模型、视图和控制器三部分,旨在降低耦合度,提高可扩展性和可维护性。Spring MVC 作为 MVC 模式的一种实现,进一步简化了 Web 开发流程。

二、Spring MVC 入门案例

1. 创建 WEB 工程并引入依赖

        首先,创建一个 Maven 管理的 WEB 工程,并在 pom.xml 中添加以下依赖:

<properties>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>


<dependencies>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>


<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>


<!-- Thymeleaf 模板引擎 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>


<!-- 其他依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>

2. 配置 web.xml

        在 web.xml 中配置 Spring MVC 的前端控制器 DispatcherServlet

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <!-- 配置字符编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置前端控制器 -->
    <servlet>
        <servlet-name>dispatcherServlet</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>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 欢迎页面 -->
    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>
</web-app>

3. 配置 springmvc.xml

        在 resources 目录下创建 springmvc.xml,配置 Spring MVC 的核心组件:

<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 扫描控制器所在的包 -->
    <context:component-scan base-package="com.qcby.controller"></context:component-scan>

    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".html" />
        <property name="templateMode" value="HTML5"/>
    </bean>

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

4. 创建控制器和视图

  • 控制器:使用 @Controller 注解定义控制器类,处理用户请求。
@Controller
public class HelloController {
    @RequestMapping(path = "/hello.do")
    public String sayHello(Model model) {
        model.addAttribute("msg", "Hello, Spring MVC!");
        return "suc";
    }
}
  • 视图:在 WEB-INF/views 目录下创建 suc.html,使用 Thymeleaf 模板引擎渲染数据。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>成功页面</title>
</head>
<body>
    <h1>Hello <b th:text="${msg}"></b></h1>
</body>
</html>

5. 部署并测试

        将项目部署到 Tomcat 服务器,启动后访问 http://localhost:8080/项目名/index.html,点击链接发送请求,即可看到成功页面。

三、Spring MVC 原理

1. 核心组件

  • 前端控制器(DispatcherServlet):接收所有请求,并分发给相应的处理器。
  • 处理器映射器(HandlerMapping):根据请求 URL 找到对应的处理器。
  • 处理器(Handler):执行具体的业务逻辑。
  • 处理器适配器(HandlerAdapter):协助处理器执行请求处理方法。
  • 视图解析器(ViewResolver):根据逻辑视图名解析出具体的视图。
  • 视图(View):渲染数据并返回给客户端。

2. 请求处理流程

  1. 用户发送请求到 DispatcherServlet
  2. DispatcherServlet 根据 HandlerMapping 找到对应的处理器。
  3. HandlerAdapter 调用处理器的具体方法处理请求。
  4. 处理器返回逻辑视图名给 DispatcherServlet
  5. DispatcherServlet 根据 ViewResolver 解析出具体的视图。
  6. 视图渲染数据并返回给客户端。

总结

        通过本文的详细讲解,您应该已经掌握了 Spring MVC 的基本配置和请求处理流程。Spring MVC 以其简洁的配置和高效的处理机制,成为了 Java Web 开发中的主流框架之一。在实际项目中,您可以根据需求进一步扩展和优化配置,提升开发效率和系统性能。


http://www.kler.cn/a/610933.html

相关文章:

  • 3ds Max 2026 新功能全面解析
  • husky的简介以及如果想要放飞自我的解决方案
  • Linux centos 7 vsftp本地部署脚本
  • 图灵300题-41~60-笔记003
  • vue3项目使用 python +flask 打包成桌面应用
  • CMake 构建的Qt 项目中的构建套件的配置
  • 《精益创业实战》第2章“对需求性进行压力测试” 总结
  • 破局离散制造:主数据管理驱动数字化转型的实践与启示
  • Git撤回操作全场景指南:未推送与已推送,保留和不保留修改的差异处理
  • 质检LIMS系统在食品生产加工企业的应用 如何保证食品生产企业的安全
  • 区块链技术详解:应用场景与核心优势
  • Python----数据分析(足球运动员数据分析)
  • DeepSeek-V3-0324重磅升级:开源大模型的新标杆
  • 基于PSO粒子群优化的多光谱图像融合算法matlab仿真
  • 虚拟机(一):Java 篇
  • 在word中使用zotero添加参考文献并附带超链接
  • Vue.js 完全指南:从入门到精通
  • 【HTML 基础教程】HTML 元素
  • 如何使用 CSS 实现多列布局,有哪些注意事项
  • 3. 轴指令(omron 机器自动化控制器)——>MC_GearIn