用 JAX-RS 和 JSR 371 规范设计一个 MVC 框架(一)开篇

最近做几个项目都是 SSM 的,也就是 Spring MVC + MyBatis。Spring MVC 不是说不好,而是覺得整个 Spring 框架太重了,而且受框架限制遇到一些小 case 也不好处理(想着这么顺应或“突破”框架的限制,——有时“原生的”反而好写出来),因此从这一点认知出发,最后决定自己写一个 MVC 框架!而设计的目标就是——提供一个最简单最小巧的 MVC 框架,花哨的功能一个不要,越简洁越好。花了2天左右时间完成,目前运行良好。

话说大家熟悉的这个 MVC,想必感触良多,Java 所津津乐道的 MVC 框架从 Struts、WebWork 到 Spring MVC 都是鼎鼎大名的,如果更细化的表示层模版诸如 Velocity、Tapestry、FreeMaker 更是层出不穷。不过在 AJAX 和 RESTful 接口大行其道的今天,服务端渲染 UI 似乎有所“低调”。于是近几年 MVC 中的 “View” 在服务端并无甚长足发展,连官方的 JSF 也渐有销声落寞的意味。所以我就在想,表示层仅仅简单的 JSP + JSTL 就够了,把复杂酷炫的界面就给 H5 吧。

Model 这一层,争议声不大。反正就是一个 Bean,或者 POJO 就可以了。当然你会覺得没那么简单,好比说什么 DTO、VO 等等诸如此类的都是 Model 意义的推广。从结构上我们可以通过 Map 来表征这种抽象。

Controller 层正是本文的重点。之前的控制器是要把数据渲染到模版的——现在也要,但也会简单许多——我说的是 API 接口的方式提供数据。因此 RESTful 方式就很重要了。究其实质,就是怎么把 HTTP URL 的请求与 Java 面向对象的方法对应起来。这样的思路会简单许多,也会自然许多。说点带有个人情绪的话题,在 2016 年的今天研究 MVC,确实有点落伍了。人家的框架的一大堆,个个功能都牛逼烘烘,为啥你还要做轮子呢?——哎,我从 MS ASP 就搞 Web,认死了一条路,不搞好它我就不甘心、不到黄河心不死!当然不是我说能搞的有多好。但我对我自己说,能够把代码在充分可控的范围内,我就舒坦了——我就是这么覺得的!

补充一点,实际情形的系统不会仅仅有 M、V、C 这三种对象这么简单。还有 Service、DAO 层的,但与 MVC 概念并不冲突。

最后说说,所謂 Web 框架,到底搞的对象是什么!?鄙人认为,先决条件有以下两点,只有彻底了解这两点之后,才能做得好的 Web 框架,不然就是“在浮沙筑高楼”!

  • HTTP 协议
  • 紧扣 Request、Response 两大基础对象

你可能感兴趣的:(用 JAX-RS 和 JSR 371 规范设计一个 MVC 框架(一)开篇)