在《Model1与Model2》中,我们简单进行了Model1与Model2这两种开发模式的比较,这两种模式可以说与MVC模型息息相关。我们可以简单理解为Model2是对MVC模型在Web领域一项具体的应用,适用于开发大型项目,而针对这样的开发,我们往往会选用WebMVC框架来简化我们的开发。
Why WebMVC框架?
在使用Servlet作为控制器、JSP作为视图显示的Model2项目开发过程中,会遇到这样一些情况:
1.截取URL
——服务端获得请求后,需要根据不同的URL访问地址(或特殊参数)来确定具体的处理逻辑,这样就有可能造成在我们的Controller里存在大量的判断来确定具体执行逻辑,并且这里的判断并不稳定,以后很有可能会增加别的请求。
2.表单数据类型转换、封装
——在表单中收集到的数据都是String类型的,我们需要把这些数据针对不同的领域模型转换为特定的数据类型并进行封装。这样的手动转换及其封装处理较为繁琐。
3.页面转向写死在了程序中
——我们在控制器里在进行页面调度过程中往往出现这样的代码:
request.getRequestDispatcher("/xxxx.jsp").forward(request, response);
这样将一些转向页面写死在程序中后,不利于后期的维护。
伴随着这样一些问题,应用中逐步进行抽象,出现了很多优秀的框架,以上这些问题都得以解决。WebMVC框架提供了基础性的服务,一些可以复用的功能得以抽象应用,基于Model2模型的开发变得简单并且灵活,它为我们拦截请求,进行中间处理:截取URL、分发请求、表单数据类型转换、封装,并且将转向页面配置到配置文件中,一系列的功能使得WebMVC框架得到广泛的应用。
WebMVC框架为我们做了些啥?
其实通过前面的介绍,我们已经知道了WebMVC框架为我们主要解决的问题。其提供的解决方案大致如下图所示:
FrontControllerServlet:前端控制器,其代表WebMVC框架为我们提供的一系列中间处理类,基本思路是解决上面提到的那些问题。
Action:业务控制器
学习思路
目前WebMVC的框架有很多:Struts、Struts2、SpringMVC、MyFaces(实现了JSF规范),读者可能看到这么多的框架,会感觉学习起来将无从下手,其实大可不必担心,框架只是提供的一系列的工具,只要我们明白了这些工具要解决的统一问题,掌握了基于其中一种框架的用法,再应用其他的也都有了个大概的脉络,也就很容易上手了。
笔者认为
学习框架还是重在学习其中的思想,明白了框架的来龙与去脉,对于应用也就得心应手了,以致后面我们可以自己动手写一些框架出来供其他人使用!相信通过这样的从应用中来到应用中去,对自己的提高也是非常大的。
版权声明:本文为博主原创文章,未经博主允许不得转载。