SpringMVC介绍

SpringMVC介绍

Spring MVC 背景介绍

Spring 框架高度可配置,并支持多种视图技术,例如 JavaServer Pages (JSP)、Velocity、Tiles、iText 以及 POI。Spring MVC 框架与具体的视图技术解耦,它将控制器、模型对象、分派器及处理程序对象的角色进行了分离,从而使得这些组件更容易定制。

简要概述 SpringMVC

SpringMVC 核心是 DispatcherServlet,它作为前端控制器(Front Controller)模式的实现,负责将请求分发给不同的后端处理器。框架通过后端控制器、映射处理器和视图解析器共同完成 MVC 架构中控制层的主要任务,并最终将业务层数据结果与相应的视图合并成一个 ModelAndView 对象。

常见 MVC 框架比较

  • 运行性能
    Jsp + Servlet > Struts1 > Spring MVC > Struts2 + Freemarker >> Struts2 (由于 OGNL 和值栈)

  • 开发效率:基本与上述顺序相反。Spring MVC 的开发效率与 Struts2 相当高,但在并发量较高的系统中,使用 Freemarker 替代 OGNL 和值栈可以显著提高性能。

Springmvc 与 Struts2 的区别

  • Springmvc 是基于方法进行拦截,而 Struts2 是基于类进行拦截。
  • 在 Springmvc 中,每个 Controller 只有一个实例,每次请求执行对应的方法;而 Struts2 每个 URL 都会创建一个新的 Action 实例。
  • Springmvc 支持单例开发且推荐使用单例,而 Struts2 因其接收参数的方式必须使用多例。
  • Struts2 接收参数通过成员变量,无法在单例模式下工作。实际上,Struts2 性能较低的原因主要在于其标签库和 OGNL 表达式解析,而非单例或多例问题。
  • 经过测试,Struts2 的速度比 Springmvc 慢,特别是在使用 Struts 标签时。
  • 安全性方面,Struts2 曾出现过漏洞,而 Springmvc 至今未有重大漏洞报告。
  • 如果使用 Struts2,建议下载最新版本以获取安全更新。

SpringMVC 强大的之处

  • 当向 MVC 添加反转控制(Inversion of Control, IoC)时,Spring 使应用程序高度解耦,并提供通过简单配置即可动态更改组件的灵活性。

  • Spring Web MVC 模块围绕 DispatcherServlet 设计,DispatcherServlet 负责请求分派、视图解析、语言环境和主题解析,并支持文件上传。

  • DispatcherServlet 使用处理程序映射决定哪个处理器应当处理传入的请求。处理程序是一个具有单一方法 ModelAndView handleRequest(request,response) 的控制器接口实现,Spring 提供了一些高级处理器实现,如 SimpleFormController。

SpringMVC 优势

  1. 清晰的角色划分

    • 前端控制器(DispatcherServlet)
    • 请求到处理器映射(HandlerMapping)
    • 处理器适配器(HandlerAdapter)
    • 视图解析器(ViewResolver)
    • 处理器或页面控制器(Controller)
    • 验证器(Validator)、命令对象(Command)、表单对象(Form Object)
  2. 分工明确且扩展点灵活

  3. 命令对象无需继承特定API,可以直接用作业务对象

  4. 与 Spring 其他框架无缝集成,这是其他 Web 框架所不具备的特性。

  5. 可通过 HandlerAdapter 支持任意类作为处理器

  6. 高度可定制,包括 HandlerMapping、ViewResolver 等组件。

  7. 功能强大的数据验证、格式化和绑定机制

  8. 利用 Spring 提供的 Mock 对象,Web 层单元测试变得非常简单

  9. 本地化和主题解析的支持,便于国际化和主题切换

  10. 强大的 JSP 标签库简化了 JSP 编写

此外,SpringMVC 还支持 RESTful 风格、简单的文件上传、契约式编程(约定优于配置)、基于注解的零配置支持等诸多优势。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值