专栏首页编程坑太多『互联网架构』软件架构-spring源码之spring MVC(上)(12)

『互联网架构』软件架构-spring源码之spring MVC(上)(12)

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

Spring Mvc

官网:https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/web.html#spring-web

具体创建一个简单的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请求处理程序/控制器的中央调度程序。

本文分享自微信公众号 - 编程坑太多(idig88)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 『中级篇』Docker 水平扩展和负载均衡(40)

    PS:Docker的scale 可以扩展,也可以所有,他们自动来控制的。web=10 可以改成5 其中的6,7,8,9,10就被删除了。

    IT故事会
  • 「走进k8s」Docker 的多阶段构建-JavaSpringboot演示(11)

    PS:也可以在springboot目录里面放置一个settings.xml文件,在mvn编译的时候连接指定的maven私服,这样就节省效率。

    IT故事会
  • 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(终结)(36)

    PS:最后docker的实践,关于爬虫这块高级docker的承诺,我也兑现了,其实很多时候就是缺少一个思路,工具真的是一大把,条条大路通罗马,多学多问,通过爬虫...

    IT故事会
  • 学者必备5大科研神器

    觉得不错的话 欢迎转发 点赞 收藏 留言 ? 01 MathType ? 一款强大的数学公式编辑器 推荐指数:⭐⭐⭐⭐⭐ 写论文的时候 最烦的就是插入公式! ...

    朱晓霞
  • Go 语言构建高并发分布式系统实践

    你知道互联网最抢手的技术人才有哪些吗?最新互联网职场生态报告显示,最抢手的十大互联网技术人才排名中Go语言开发人员位居第三,从中不难见得,Go语言的渗透率越来越...

    李海彬
  • Go 语言构建高并发分布式系统实践

    你知道互联网最抢手的技术人才有哪些吗?最新互联网职场生态报告显示,最抢手的十大互联网技术人才排名中Go语言开发人员位居第三,从中不难见得,Go语言的渗透率越来越...

    李海彬
  • Go 语言构建高并发分布式系统实践

    你知道互联网最抢手的技术人才有哪些吗?最新互联网职场生态报告显示,最抢手的十大互联网技术人才排名中Go语言开发人员位居第三,从中不难见得,Go语言的渗透率越来越...

    李海彬
  • Go 语言构建高并发分布式系统实践

    你知道互联网最抢手的技术人才有哪些吗?最新互联网职场生态报告显示,最抢手的十大互联网技术人才排名中Go语言开发人员位居第三,从中不难见得,Go语言的渗透率越来越...

    李海彬
  • 学界 | 用单张图片推理场景结构:UC Berkeley提出3D景深联合学习方法

    选自BAIR Blog 作者:Shubham Tulsiani、Tinghui Zhou 机器之心经授权编译 参与:smith、蒋思源、李泽南 最近,UC Be...

    机器之心
  • 打补丁后ASP.NET网站不能访问的解决方法

    为了简单,我一直用webservice提供对外接口,dotNetFramwork版本为2.0,一直运行得好好的,最近,服务器上的360安全卫士提示有新的补丁,习...

    习惯说一说

扫码关注云+社区

领取腾讯云代金券