第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

百萬架構(gòu)師第十五課:源碼分析:Spring 源碼分析:SpringMVC核心原理及源碼分析|JavaGuide

標(biāo)簽:
Java

Spring MVC 一种 Web 开发的设计模式

实现了不同业务层面的解耦,隔离。

Model:

​ 将传输数据封装成一个完成的载体。把很多参数传成一个Model。就是一种设计模式,你也可以不封装。

View:

​ 视图,用来展示或者输出的模块(HTML、JSP、JSON、String、Swing、XML…)

Control:

​ 控制交互的一个中间组件,由它来根据用户请求分发不同任务从而得到不同的结果。

DTO,POJO 就是一个 Model

MVC :基于项目开发的设计模式。用来解决用户和后台交互的问题。

J2EE标准

JSP 页面是一个万能的组件,可以写 HTML、写 JS、写 JAVA 逻辑、写 SQL 语句

MVC 框架应运而生: Struts1、Struts2、Webwork、Spring MVC

SpringMVC: 只是 MVC 设计模式的应用典范。给 MVC 的实现制定了一套标准

M:支持将 URL 参数自动封装成一个 Object 或者 Map

V:自己只有一个默认的 template、支持扩展、自定义 View,能够自定义解析

C:做到把限制放宽了,任何一个类,都有可能是一个 Controller

Struts 对用户的要求太高了,Spring MVC 对应用户的要求几乎没有。写几个 annotation 就好了

  • DispatcherServlet
    • FrameworkServlet
      • HttpServletBean
      • ApplicationContextAware - setContextInitializers
    • FrameworkServlet - refresh() - onRefresh()
@Override
protected void onRefresh(ApplicationContext context) {
   // Strategy 策略
   initStrategies(context);
}

protected void initStrategies(ApplicationContext context) {
   // 有九个策略
   // 针对于每个用户请求,都会经过一些处理的策略之后,最终才能会有结果输出。
   // 每种策略可以自定义敢于,但是最终的结果都是一致
   // ModelAndView

   // ==========这里就是传输中的 Spring MVC 中的九大组件=========

   initMultipartResolver(context); // 文件上传解析,如果请求类型是 multipart 将通过 MultipartREsolver
   initLocaleResolver(context);// 本地化解析
   initThemeResolver(context);// 主题解析

   /** 我们自己会实现  */
   initHandlerMappings(context);// 通过 HandlerMapping,将请求映射到处理器
   /** 我们自己会实现*/
   initHandlerAdapters(context);// 通过 HandlerAdapter 继续进行多类型的参数的动态匹配

   initHandlerExceptionResolvers(context);// 如果执行过程中遇到异常,将交给 HandlerExceptionResolvers
   initRequestToViewNameTranslator(context); // 直接解析请求到视图名
   /** 我们自己会实现*/
   initViewResolvers(context);// 通过 viewResolver 解析逻辑试图到具体试图实现
   initFlashMapManager(context); // flash 映射管理器
}
请求过程:

SpringMVC请求过程

FrameworkServlet.processRequest()

  • doService()
    • DispatcherServlet.doService()

抽象方法调用子类实现,叫做模板方法模式。

MVC 的基本原理:

SpringMVC基本原理

Spring url 是可以支持正则表达式的。

Spring MVC 讨论

HandlerMapping 是模范了 Struts ActionMapping

严格地说是 Spring MVC 还支持 Ant Pattern

马哥,那你认为它能够干掉 struts 是因为它的哪一点优点呢?

主要是非 Spring MVC,获取 Bean 的方式比较麻烦

需要通过 Spring 应用上下文获取

并且对于 REST 支持,其他框架相对薄弱

Spring MVC 是 Struts 2 + JAX-RS 的混合体

JAX-RS: Java API for RESTful Web Services

微信公众号:不止极客

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消