拒绝低效搬砖,如何快速上手主流 Web 框架 Spring MVC?

作为一位 Java Web 开发人员,你是否遭遇过下面这些状况:

·客户端请求参数我要一个个地取,不能用循环,醉了……

·参数取出来都是 String 类型,我还得一个个做类型转换,很恼火…...

·配置文件写得比代码还多,这是要逼疯我的节奏吗?

·Servlet 处理多个请求,需要手动完成逻辑控制,就不能智能一点吗?!

如果你坚持使用原生的 Servlet 做开发,上面这些坑是一定绕不过去的。Servlet 是 Java Web 的基石,首先简单谈一下 Servlet,为什么使用起来这么不方便。

Web 开发的原理是服务端接收到客户端传来的 request,进行业务处理,然后将结果通过 Response 响应给客户端的过程。

客户端和服务端通过 HTTP 协议进行数据交互,底层机制是客户端将用户输入的信息组装成 HTTP 协议报文,然后通过网络将报文传输到服务端。

服务端通过特定的 Web 容器(Tomcat、Jetty 等)接收报文并进行解析,将数据封装到 request 对象中,并通过 request 获取数据进行业务逻辑处理,将处理结果封装到 response 对象中,传给 Web 容器。

Web 容器再次进行解析,将 response 对象转为 HTTP 协议报文返回给客户端,客户端对结果进行渲染展示给用户。

服务端具体对接收请求做出响应的工作是由 Servlet 来完成的,但是 Servlet 有其自身无法克服的缺点:配置过于繁琐。

同时 HTTP 协议传输的数据都是文本形式,这就需要开发者进行大量的数据类型转换,这种工作没有技术含量、简单枯燥易出错。因此,使用 Servlet 显得非常低效和落后。

我们的时间和精力是有限的,不能把有限的时间和精力浪费在没有技术含量的体力活上,我们追求的是更加高效、更加便捷的开发模式。

这就是框架存在的价值:让开发者将精力集中在核心业务的开发上,框架会帮你屏蔽掉跟业务开发无关的各种问题,体力活框架帮你做。

框架的特点就是在原有技术的基础上,提供一套和原技术具备相同业务功能的组件,同时比原技术更加高效易用,功能更加强大。

Spring MVC 就是这样一款实现 MVC 设计模式的框架,是 Spring 框架的一个分支产品,以 Spring IoC 容器为基础,并利用容器的特性来简化它的配置。

Spring MVC 相当于 Spring 的一个子模块,可以很好地和 Spring 结合起来进行开发,是每一个 Java Web 开发者都应该掌握的技术。

为什么要使用 Spring MVC

使用 Spring MVC 可以帮助你屏蔽掉繁琐的数据类型、数据绑定,同时提高良好的自定义校验,强大的标签库,让你开发起来更加得心应手、高效。

相比于 Struts2 框架,Spring MVC 的开发效率和性能更高,配置更简单,功能更强大,同时可以和 Spring 框架无缝对接,安全性比 Struts2 更高。

Spring MVC 的优点

完整的角色划分:每种角色各司其职、协同工作。

简便的配置方式:以 Spring IoC 为基础,将各个组件都以 JavaBean 的形式配置。

代码复用:可使用现有的业务对象作为表单对象,不需要去扩展某个特定框架的基类。

自定义数据转换器:可根据需求对数据类型进行转换,比如将特定格式的字符串转为日期类型。

功能强大的表单标签库:让 JSP 表单的数据绑定更加便捷高效。

国际化:支持根据用户区域显示不同国家的语言。

Spring MVC 工作流程

客户端请求被 DispatcherServlet(前端控制器)接收

根据 HandlerMapping 映射到 Handler

生成 Handler 和 HandlerInterceptor(如果有则生成)

Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式一并返回给 DispatcherServlet

DispatcherServlet 通过 HandlerAdapter 调用 Handler 的方法做业务逻辑处理

返回一个 ModelAndView 对象给 DispatcherServlet

DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解析成物理视图 View

ViewResolver 返回一个 View 给 DispatcherServlet

DispatcherServlet 根据 View 进行视图渲染(将模型数据填充到视图中)

DispatcherServlet 将渲染后的视图响应给客户端

如果你想学习 Spring MVC

上面简单跟大家聊了聊 Spring MVC 的广泛应用和优势。如果你想快速了解并掌握 Spring MVC 在项目中最常用的技能点,以及在实际开发中 Spring MVC 与其他技术的整合,为你推荐我在 GitChat 新上的《Spring MVC 实战手册》课程。

现在各种各样的学习资料非常多,从浩如烟海的资源中提炼出有价值、实用性强的信息需要付出时间成本。

而《Spring MVC 实战手册》课程就是特别期待能够帮助读者节省时间,吸收到真正需要的知识、达到事半功倍的效果。

我的一点儿学习经验

我从事 Java 开发多年,一直以来都有总结的习惯,无论是学习还是工作中遇到的问题,哪怕是一个很小的点,我也会看书或者上网查资料,尽可能将它搞清楚。

同时,每个技能点都要用代码的实现结果来验证理论,久而久之我总结的笔记越来越多,当积累到达一定程度的时候,量变会升华为质变,所谓积跬步以致千里。

记录和总结完善了我的知识体系,提高了我解决问题的能力。在实际的开发中,也对于提高工作效率起到了很重要的作用。

我将多年来的笔记重新编排、整理,不但有技能点的详细阐述,同时加入了自己的思考和见解,以及一些实际开发的经验技巧,最终形成了《Spring MVC 实战手册》课程。这个过程让我获益良多,相信也会对订阅课程的读者有所裨益。

记笔记和总结是非常优秀的习惯,建议大家也在学习这门课程的过程中持续保持。

Spring MVC 实战手册

作者:宁楠

文末试读

订购本课程可获得专属海报,分享专属海报并邀请一位好友购买,即可获得25%的现金返现,多邀多得,上不封顶,立即提现。

提现流程:请在 GitChat 服务号中点击“我-我的邀请-提现”进行提现。

课程大纲

本课程有四部分内容,共计23课:

第一部分为 Spring IoC 篇(第01~04课),IoC 作为 Spring 框架体系的底层容器,是我们必须掌握的基础,这部分内容将讲解 Spring IoC 的原理及实际应用。

第二部分为 Spring MVC 详解篇(第05~17课),这部分内容将详细讲解 Spring MVC 的使用,涵盖了实际开发中所常用的技能点,理论结合实践的方式不仅仅是教给读者基本概念,同时让读者具备使用 Spring MVC 开发项目的能力。

第三部分为 MongoDB 篇(第18~21课),这部分内容将讲解当前主流的 NoSQL 数据库 MongDB,包括安装及使用。

第四部分为项目实战篇(第22~23课),这部分内容将讲解 Nginx 搭建 Tomcat 集群,以及使用 Spring MVC + Layui + Spring Data + MongoDB 的技术选型完成一个项目实战。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181211B163L900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券