亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

『互聯網架構』軟件架構-spring源碼之spring MVC(上)(12)

標簽:
Spring

spring MVC从2014年开始流行,基本工作上都用过,一起在熟悉和深入了解下。源码:https://github.com/limingios/netFuture/blob/master/仿springmvc/tl0920

Spring MVC

简洁的一个web开关

MVC其实就是一种设计模式,三层架构:视图,模型,控制。J2EE开发的模式,例如servlet来说绝对是简洁。

支持Restful 支持,支持静态资源,本地解析

灵活的url映射关系

跟spring ioc aop 完美集成

本身都是spring,肯定可以完美集成

对其他试图freemark,jsp,Velocity,jstl支持集成

  1. jsp 翻译型,jsp先变成class转成java
  2. Velocity 解释型
  3. 效率 jsp 大于 Velocity
  4. 开发方便程度Velocity大于jsp
  5. jsp问题:嵌入java代码(也违反了MVC的思路)

静态,动态

静态就是通过对应静态文件的缓存,key来对应图片。很多时候,我们都是通过nginx然后跳转到tomcat,nginx的作用其实不光是代理,还可以缓存,它用来缓存让第二次的话直接读取本地,较少服务端的压力。

  1. html,css,img,flash客户端
  2. jsp,jstl->服务端
  3. last-modified

第一次登陆,网站返回200状态码

  1. if-modified-since

第二次登陆,网站返回304状态码,if-modified-since等于第一次的。
5.加载优先级 compiler & listings

Spring Mvc

具体创建一个简单的mvc例子,这里就不创建了。

  • 小技巧

app 或者pc 区别分开来,返回结果是一样的
@RequestMapping(value = {"/app","/pc"})

对上述流程图的解释:

  • 用户发起请求到前端控制器(Controller)
  • 前端控制器没有处理业务逻辑的能力,需要找到具体的模型对象处理(Handler),到处理器映射器(HandlerMapping)中查找Handler对象(Model)。
  • HandlerMapping返回执行链,包含了2部分内容: ① Handler对象、② 拦截器数组
  • 前端处理器通过处理器适配器包装后执行Handler对象。
  • 处理业务逻辑。
  • Handler处理完业务逻辑,返回ModelAndView对象,其中view是视图名称,不是真正的视图对象。
  • 将ModelAndView返回给前端控制器。
  • 视图解析器(ViewResolver)返回真正的视图对象(View)。
  • (此时前端控制器中既有视图又有Model对象数据)前端控制器根据模型数据和视图对象,进行视图渲染。
  • 返回渲染后的视图(html/json/xml)返回。
  • 给用户产生响应。

PS:先了解总体的流程,然后在细细的品味源码的味道,重点是DispatcherServlet 是HTTP请求处理程序/控制器的中央调度程序。

點擊查看更多內容
TA 點贊

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

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
1.7萬
獲贊與收藏
1318

關注作者,訂閱最新文章

閱讀免費教程

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

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消