Spring MVC的基本概念

  1. Spring MVC 的核心概念

Spring MVC 是基于 MVC 设计模式的框架,其核心组件包括:

  • Controller(控制器):接收用户请求,处理业务逻辑,并返回视图名称或数据。

  • Model(模型):封装数据,通常是一个 JavaBean,用于在控制器和视图之间传递数据。

  • View(视图):负责展示数据,通常是 JSP、Thymeleaf 或其他模板引擎生成的页面。

2. Spring MVC 的工作流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。

  2. DispatcherServlet 根据请求信息调用 HandlerMapping 来查找 Handler(Controller)。

  3. HandlerMapping 返回 Handler 的执行链(包括拦截器)。

  4. DispatcherServlet 调用 HandlerAdapter 来执行 Handler。

  5. HandlerAdapter 调用 Handler,并返回一个 ModelAndView 对象。

  6. DispatcherServlet 根据 ModelAndView 中的视图信息,调用 ViewResolver 解析视图。

  7. ViewResolver 返回具体的 View。

  8. DispatcherServlet 将数据填充到 View 中,并渲染视图。

  9. 最终将响应返回给用户。

3. Spring MVC 的核心组件

  • DispatcherServlet:前端控制器,是整个 Spring MVC 的核心。它负责接收请求、分发请求到对应的处理器,并返回响应。

  • HandlerMapping:处理器映射器,用于根据请求信息(如 URL、HTTP 方法等)找到对应的处理器(Controller)。

  • HandlerAdapter:处理器适配器,用于执行处理器(Controller)的方法,并返回一个 ModelAndView 对象。

  • ViewResolver:视图解析器,用于将逻辑视图名称解析为具体的视图实现(如 JSP 页面)。

  • Controller:控制器,用于处理用户请求,执行业务逻辑,并返回视图或数据。

4. Spring MVC 的配置

Spring MVC 的配置可以通过 XML 配置文件或注解来完成。以下是常见的配置方式:

基于注解的配置
  1. @Controller:标记一个类为控制器。

  2. @RequestMapping:用于映射请求到控制器方法。

  3. @RequestParam:用于绑定请求参数到方法参数。

  4. @PathVariable:用于绑定 URL 中的占位符到方法参数。

  5. @ModelAttribute:用于将方法参数绑定到模型中。

  6. @ResponseBody:用于将方法返回值直接写入 HTTP 响应体。

  7. @RestController:用于定义 RESTful 风格的控制器,相当于 @Controller + @ResponseBody。

基于 XML 的配置

web.xml 中配置 DispatcherServlet:

xml复制

复制代码
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

dispatcher-servlet.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="...">

    <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>

5. Spring MVC 的优点

  1. 松耦合:通过注解和配置文件,实现了控制器、模型和视图之间的低耦合。

  2. 易于测试:控制器方法可以独立于 Servlet API 进行测试。

  3. 高度灵活:支持多种视图技术(如 JSP、Thymeleaf、Freemarker)。

  4. 与 Spring 框架无缝集成:可以方便地与其他 Spring 模块(如 Spring Data、Spring Security)集成。

  5. 支持 RESTful 风格的开发:通过注解和配置,可以轻松开发 RESTful 风格的 Web 应用。

6. Spring MVC 的应用场景

Spring MVC 适用于各种基于 Java 的 Web 应用开发,尤其是企业级应用。它支持传统的 Web 应用开发和 RESTful 风格的 API 开发。

使用Spring JDBC模板(JdbcTemplate)集成数据库

Spring JDBC模板是Spring提供的一个简化数据库操作的工具,它封装了JDBC的复杂操作,使得开发者可以更方便地执行SQL语句。步骤1:配置数据源(DataSource),步骤2:配置JdbcTemplate,步骤3:在Service层或DAO层使用JdbcTemplate

总结

Spring MVC 是一个功能强大且灵活的 Web 开发框架,通过 MVC 设计模式实现了代码的清晰分层和低耦合。它与 Spring 框架的其他模块紧密集成,提供了丰富的功能和高度的可扩展性。

相关推荐
CAE虚拟与现实39 分钟前
docker desktop中的build功能是要build什么
java·docker·容器
allnlei3 小时前
s6-overlay - 装在 Docker 容器里的轻量级管家
java·docker·容器
IT_Octopus9 小时前
IntelliJ 本地日志路径自定义:`-DLOG_PATH=./logs` 为什么总“不听话“
java·log4j·intellij-idea
长征coder9 小时前
【无标题】
java·性能优化
新时代牛马10 小时前
PCI与PCIe 硬件原理、配置空间/BAR 与 Linux 驱动完整篇:从 LTSSM、TLP 到 ECAM 与probe
java·linux·服务器
Bs_MoneyMagnet10 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
sunshine22 girl11 小时前
Java学习一 环境配置2 Idea的入门使用和maven配置,项目启动脚本配置
java·maven
有点。11 小时前
*C++哈夫曼树与哈夫曼编码
java·c++·servlet
CRMEB系统商城12 小时前
CRMEB标准版系统(Java)v3.1正式发布
java·spring·微信小程序·php·教育电商
写后端的胖头鱼12 小时前
【高频面试题】Java 基础类型 + 包装类 + String 互相转换
java·开发语言