资讯专栏INFORMATION COLUMN

我对 SpringMVC 的一些误解

seanlook / 1970人阅读

摘要:引言刚考完期末,再也不用考试啦最近学习了慕课网的实战课手写,剑指开源框架灵魂。最近将本课程和看透结合起来学习,感觉受益匪浅,同时,纠正了我之前对的一些误解。误解洪荒时代的当年,开发都需要手动去实现。为了解决太多的问题,引入了,进行统一调度。

引言

刚考完期末,再也不用考试啦!!!

最近学习了慕课网的实战课《手写SpringMVC,剑指开源框架灵魂》。

spring-boot太过智能了,智能到我们完全不用去管底层是如何实现的,都可以很轻易地去开发一款web应用。

最近将本课程和《看透Spring MVC》结合起来学习,感觉受益匪浅,同时,纠正了我之前对SpringMVC的一些误解。

误解 洪荒时代的Java Web

当年,开发Java Web都需要手动去实现Servlet

public class TestServlet implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

Servlet中规定了五个方法。

init初始化方法,service业务逻辑方法,destroy销毁方法。

web.xml文件中配置路由到Servlet之间的映射,也就是说,我们没开发一个接口,都需要写一个Servlet,然后配一遍xml



    test
    TestServlet


    test
    /test

所以就导致了项目中会有很多的Servlet,以及极其冗长的xml配置文件。

执行流程

整体执行流程就如下图所示:

当来请求时,客户端和服务端的Tomcat建立连接,Tomcat去找web.xml,然后根据其中定义的urlServlet的映射,去初始化相应的Servlet,然后调用service方法处理业务,返回。

最开始对SpringMVC的多线程不是很理解,现在终于明白了,多线程其实并不是SpringMVC管理的,而是当有一个新的客户端建立连接时,Tomcat就会新建一个线程去调用Servlet的方法处理请求,所以多线程其实是Tomcat的多线程。

SpringMVC

SpringMVC为了解决Servlet太多的问题,引入了DispatcherServlet,进行统一调度。

SpringMVC定义DispatcherServlet接管/,即所有请求,内部再将请求分发给各个HandlerMapping,通俗来说就是控制器中的方法。

总结
好读书,不求甚解。  ---晋·陶渊明《五柳先生传》

做开发,不可不求甚解。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75176.html

相关文章

  • Python 中 is 语法带来误解

    摘要:起步的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。的误解但是如果你尝试这个判断不见得管用。用来检查左侧和右侧是否是完全相同的对象。每种语言的结构都存在一些出乎意料的使用。 起步 Python 的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。 假如要判断一个变量是不是 17,那可以: if x is 17: x...

    Yuqi 评论0 收藏0
  • 谁说“程序员离开电脑就是废物?我身边这位大兄弟表示不服!真事

    摘要:三十而立时,无房单身郎。女生也经常找他修电脑,只要有他在,所有的电子产品都能很快恢复原貌。   年少太轻狂,独闯IT行。愁丝根根落,眼圈黑茫茫。bug数万种,技能要...

    happyfish 评论0 收藏0
  • 使用servlet3.0异步特性改造spring-cloud-zuul

    摘要:不过在出来之后支持异步了,可以把业务操作放到独立的线程池里面去,这样可以尽快释放线程,本身也支持异步了,本篇文章将带你如何使用的异步特性来改造优化其性能。 ​ 我们知道spring-cloud-zuul是依赖springMVC来注册路由的,而springMVC又是在建立在servlet之上的(这里微服务专家杨波老师写过一篇文章讲述其网络模型,可以参考看看),在servlet3.0...

    HmyBmny 评论0 收藏0
  • 订阅发布和vue双向绑定

    摘要:概念理解重要特性双向绑定和之间无耦合通过操作利用提供的机制自动实现的更新。实现说明解析不包括模板指令等因为模板编译解析等和本文核心主题无关这些仅仅是基于双向绑定的应用场景。双向绑定的核心是实现。 引言 最近在看vue的源码,有些感触,下面阐述一些个人理解。之前写过一篇文章,是讲述关于观察者模式的,与本文主旨有关,需要的朋友可以看一下。 vue的核心是mvvm,vue2又增加了虚拟dom...

    Joyven 评论0 收藏0

发表评论

0条评论

seanlook

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<