作为一位JavaWeb开发人员,你是否遭遇过下面这些状况:
客户端请求参数我要一个个地取,不能用循环,醉了……
参数取出来都是String类型,我还得一个个做类型转换,很恼火…...
配置文件写得比代码还多,这是要逼疯我的节奏吗?
Servlet处理多个请求,需要手动完成逻辑控制,就不能智能一点吗?!
如果你坚持使用原生的Servlet做开发,上面这些坑是一定绕不过去的。Servlet是JavaWeb的基石,首先简单谈一下Servlet,为什么使用起来这么不方便。
Web开发的原理是服务端接收到客户端传来的request,进行业务处理,然后将结果通过Response响应给客户端的过程。
客户端和服务端通过HTTP协议进行数据交互,底层机制是客户端将用户输入的信息组装成HTTP协议报文,然后通过网络将报文传输到服务端。服务端通过特定的Web容器(Tomcat、Jetty等)接收报文并进行解析,将数据封装到request对象中,并通过request获取数据进行业务逻辑处理,将处理结果封装到response对象中,传给Web容器。Web容器再次进行解析,将response对象转为HTTP协议报文返回给客户端,客户端对结果进行渲染展示给用户。
服务端具体对接收请求做出响应的工作是由Servlet来完成的,但是Servlet有其自身无法克服的缺点:配置过于繁琐,同时HTTP协议传输的数据都是文本形式,这就需要开发者进行大量的数据类型转换,这种工作没有技术含量、简单枯燥易出错。因此,使用Servlet显得非常低效和落后。
我们的时间和精力是有限的,不能把有限的时间和精力浪费在没有技术含量的体力活上,我们追求的是更加高效、更加便捷的开发模式。
这就是框架存在的价值:让开发者将精力集中在核心业务的开发上,框架会帮你屏蔽掉跟业务开发无关的各种问题,体力活框架帮你做。框架的特点就是在原有技术的基础上,提供一套和原技术具备相同业务功能的组件,同时比原技术更加高效易用,功能更加强大。
SpringMVC就是这样一款实现MVC设计模式的框架,是Spring框架的一个分支产品,以SpringIoC容器为基础,并利用容器的特性来简化它的配置。SpringMVC相当于Spring的一个子模块,可以很好地和Spring结合起来进行开发,是每一个JavaWeb开发者都应该掌握的技术。
1.为什么要使用SpringMVC
使用SpringMVC可以帮助你屏蔽掉繁琐的数据类型、数据绑定,同时提高良好的自定义校验,强大的标签库,让你开发起来更加得心应手、高效。
相比于Struts2框架,SpringMVC的开发效率和性能更高,配置更简单,功能更强大,同时可以和Spring框架无缝对接,安全性比Struts2更高。
SpringMVC的优点
完整的角色划分:每种角色各司其职、协同工作。
简便的配置方式:以SpringIoC为基础,将各个组件都以JavaBean的形式配置。
代码复用:可使用现有的业务对象作为表单对象,不需要去扩展某个特定框架的基类。
自定义数据转换器:可根据需求对数据类型进行转换,比如将特定格式的字符串转为日期类型。
功能强大的表单标签库:让JSP表单的数据绑定更加便捷高效。
国际化:支持根据用户区域显示不同国家的语言。
SpringMVC工作流程
客户端请求被DispatcherServlet(前端控制器)接收
根据HandlerMapping映射到Handler
生成Handler和HandlerInterceptor(如果有则生成)
Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
DispatcherServlet通过HandlerAdapter调用Handler的方法做业务逻辑处理
返回一个ModelAndView对象给DispatcherServlet
DispatcherServlet将获取的ModelAndView对象传给ViewResolver视图解析器,将逻辑视图解析成物理视图View
ViewResolver返回一个View给DispatcherServlet
DispatcherServlet根据View进行视图渲染(将模型数据填充到视图中)
DispatcherServlet将渲染后的视图响应给客户端
2.如果你想学习SpringMVC
上面简单跟大家聊了聊SpringMVC的广泛应用和优势。如果你想快速了解并掌握SpringMVC在项目中最常用的技能点,以及在实际开发中SpringMVC与其他技术的整合,为你推荐我在GitChat新上的《SpringMVC实战手册》课程。
现在各种各样的学习资料非常多,从浩如烟海的资源中提炼出有价值、实用性强的信息需要付出时间成本。而《SpringMVC实战手册》这门课就能帮助你节省时间,吸收到真正需要的知识、达到事半功倍的效果。
3.我的一点儿学习经验
我从事Java开发多年,一直以来都有总结的习惯,无论是学习还是工作中遇到的问题,哪怕是一个很小的点,我也会看书或者上网查资料,尽可能将它搞清楚。同时,每个技能点都要用代码的实现结果来验证理论,久而久之我总结的笔记越来越多,当积累到达一定程度的时候,量变会升华为质变,所谓积跬步以致千里。记录和总结完善了我的知识体系,提高了我解决问题的能力。在实际的开发中,也对于提高工作效率起到了很重要的作用。
我将多年来的笔记重新编排、整理,不但有技能点的详细阐述,同时加入了自己的思考和见解,以及一些实际开发的经验技巧,最终形成了《SpringMVC实战手册》课程。这个过程让我获益良多,相信也会对订阅课程的读者有所裨益。记笔记和总结是非常优秀的习惯,建议大家也在学习这门课程的过程中一并尝试。
课程大纲
本课程有四部分内容,共计23课:
第一部分为SpringIoC篇(第01~04课),IoC作为Spring框架体系的底层容器,是我们必须掌握的基础,这部分内容将讲解SpringIoC的原理及实际应用。
第二部分为SpringMVC详解篇(第05~17课),这部分内容将详细讲解SpringMVC的使用,涵盖了实际开发中所常用的技能点,理论结合实践的方式不仅仅是教给读者基本概念,同时让读者具备使用SpringMVC开发项目的能力。
第三部分为MongoDB篇(第18~21课),这部分内容将讲解当前主流的NoSQL数据库MongDB,包括安装及使用。
第四部分为项目实战篇(第22~23课),这部分内容将讲解Nginx搭建Tomcat集群,以及使用SpringMVC+Layui+SpringData+MongoDB的技术选型完成一个项目实战。
专家推荐
《SpringCloud微服务:全栈技术与案例解析》一书作者
极部落Java开发者大会分享嘉宾
尹吉欢推荐——
本课程内容由浅入深、知识点全面,同时结合了作者丰富的实战经验,行文流畅,是不可多得的学习资料。
现在试读订阅
涨姿势推荐
精通SpringBoot42讲
SpringBootWebFlux上手教程
团购课程享受优惠
GitChat新课《SpringMVC实战手册》限时团购中,课程原价39元,新课特价29元,团购价24元,参加团购省5元(省下一盒泡面+咸菜的钱),有意向参加新课团购请扫描下方