一次http请求,后台如何抽象Controller使开发只关注业务实现

问题

优秀的框架,开发人员不需要关心技术细节,只需实现框架开放出来的入口,实现业务逻辑。那么,一次http请求,后台是如何抽象Controller入口类呢?

大致抽象步骤

  1. 发送一次 Http 请求,首先要找到服务器并监听的端口的服务
  2. 根据请求路径找到对应的 Controller 入口代码处理业务并返回数据

根据上边的步骤,有个哥们造了一个简易版的轮子,有兴趣可以看一下
https://github.com/feifa168/mytomcat

Tomcat

一般我们会把开发好的项目打包成 WAR 包,然后放进 Tomat 容器里跑,SpringBoot 框架内置了 Tomcat,直接运行 JAR 包就可以跑项目,Tomcat 的作用就是使http服务和具体项目分离开来

下边看看 Tomcat 执行了哪些操作

  1. 当发起一次 Http 请求时,浏览器和相应服务器上的 Tomcat 建立 TCP 连接,
  2. 根据请求去找Servlet容器里的servlet业务入口点并执行返回

其中,Servlet 是 Java 的一个规范,在一般的开发中,它用来连接 Servlet 容器和业务入口

下边我们看看代码的简单实现

public class MyServlet extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response){
        PrintWriter pw = response.getWriter();
        pw.println("Hello World");
    }
}

service() 就是我们项目对于一个请求的入口,它是通过 Tomcat 去调用的。开发可以根据自己的需要在里面写代码,不过很快就会发现,该入口很臃肿冗余,例如,写完代码得到数据模型后,需要手动拼写数据和视图的绑定,而这些基本上其它接口都需要的。开发开始关注了很多跟业务无关的技术了,说明有待改进!

SpringMVC

这个时候 SpringMVC 该出场了,顾名思义,它是在 Spring 框架下基于 MVC 模型设计的

  1. C 是 Controller 控制器,是业务入口,负责链接 M 和 V
  2. M 是 Model 数据模型
  3. V 是 View 视图

不过现在前后端分离后,V 已经不用了,Controller 直接返回 Json 数据。前后端分离,对于开发人员又是一次抽象,抽象 View 给前端解决,后台 Java 只关注业务逻辑。这样层次的抽象,使后台开发人员关注核心功能,可解决更复杂的事情

下边看看 SpringMVC 框架的简略版流程图


image.png
  1. 浏览器发起请求,dispatcherServlet 收到进行转发
  2. 通过 HandlerMapping 路由找到 Controller 入口
  3. 执行完业务逻辑并返回 Model 数据模型
  4. ViewResolve 解析渲染数据,最终把数据返回浏览器

总结

到这里,我们看到在 SpringMVC 框架中,开发只需要关注入口 Controller 和业务开发,无需关注其它技术细节

越是优秀的框架,你越是感受不到它的存在,这就是层层抽象的魅力,如果你感觉代码很乱,很冗余,说明你的代码需要抽象了,这也是你成长的机会!


本文是基于自己理解写的,如果有错欢迎留言讨论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 1,035评论 0 0
  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 849评论 0 0
  • 一般测试驱动开发项目中,我们会在Maven中建立一个项目文件和一个一一对应的测试项目文件。每写好一个模块,先对其进...
    东东酱酱阅读 12,180评论 3 14
  • 1.Spring背景 1.1.Spring四大原则: 使用POJO进行轻量级和最侵入式开发; 通过依赖注入和基于借...
    嗷大彬彬阅读 832评论 0 2
  • 今晚 月是最美的诗 你穿越渭水之南 一双隐形的翅膀跨过了天涯。 窗外清风徐徐 急促的键盘音,此起彼伏 没有乱章节,...
    唐春元ok阅读 570评论 2 2