今日思考:MVC系列框架之Struts存在的意义是什么?
Struts其实就是MVC的代名词,那么提到MVC就不得不提早期的ModelⅠ。那时候JSP页面中混杂了大量的JAVA Scriptlet脚本语句,为了可维护性考虑,有人提出了ModelⅡ,也即现在的MVC模式。所以可以看出来,MVC的提出是建立在早期JSP页面中混杂了大量的JAVA Script脚本语句的前提之下的。在这种情况下MVC的出现让JSP的世界变得干净许多。
虽说是MVC框架,其实有人也指出,Struts系的框架只能算是一种伪MVC。为什么这么说呢?因为它没有MVC中的最核心的部分:事件控制,其实Struts看起来更像是一种控制转发框架。那么这种跳转是否是必须的呢?
自从2005年开始,Ajax开始崭露头角,到现在为止,不谈Ajax已经到了成熟应用的地步,但回头再看MVC,是否可以有另外一种更优雅、清晰的思路来代替早期的ModelⅠ呢?
先来看一小段代码:
- <sky:init method="com.sky.platform.Login.init">
- <html>
- <head>
- <title>${Title}</title>
- <script>
- Sky.onReady(function(){
- $("btnLogin").on("click", function login(){
- var dc = Form.getData("loginForm");
- Server.sendRequest("com.sky.platform.Login.submit",dc,function(response){
- if(response&&response.Status==0){
- alert(response.Message);
- }
- });
- });
- });
- </script>
- </head>
- <body>
- <form id="loginForm" method="post" style=" display:block;height:100%;">
- <input name="UserName" type="text" />
- <input name="Password" type="password" />
- <input id="btnLogin" type="button"/>
- </form>
- </body>
- </html>
- </sky:init>
看看这段代码是怎么解决早期Model 1的混乱的
- <sky:init method="com.sky.platform.Login.init">
com.sky.platform.Login类可以看做是这个页面的后台绑定类,其思路来源于Aspx.Net
init方法用来做页面的初始化动作
页面中像这种需要获取的数据就可以这样来实现:
- ${Title}
Struts的控制转发很重要的一部分功能就是获取数据放置页面属性范围中,而现在转而用这种方式就可以实现Strtus的获取数据功能。
有人会问,像列表之类的,你一个${}怎么能够实现呢?答案是:我们可以在前台实现对应的Ajax风格的列表控件,如此之类......
像表单其他我们也可以通过Ajax直接提交后台绑定类的方法的方式来实现
- Server.sendRequest("com.sky.platform.Login.submit",dc,function(response){
- if(response&&response.Status==0){
- alert(response.Message);
- }
- });
这种编程思想与Struts系MVC框架的本质的区别就是完全抛弃了其需要的控制转发配置,因为Struts用来配置控制转发的文件本身只是为了实现其MVC的功能而存在的,那么现在我们已经有了一种替代的解决方案来解决早期的Model1的混乱局面,那么Struts系MVC框架的控制转发是否还有存在的必要呢?
其实这个思路的类似解决方案就是JSF,但是JSF并没有像ASPX.Net那样完全使用后台绑定类的概念,其并没有抛弃类Struts的路由导航配置。
这只是个人观点,欢迎大家讨论、斧正,提出自己的见解!
今日思考:MVC系列框架之Struts存在的意义是什么?的更多相关文章
- ASP.NET MVC系列 框架搭建(二)之仓储层的优化
大神勿喷,小神默默学. 会了就是不值一提的东西,不会就是绝对的高大上. 最后上传源码.希望能给读者带来一些新的认识及知识. 还没上过头条..各位大神,请点支持一下小弟. 陆续更新.更新到你会为止!! ...
- ASP.NET MVC系列 框架搭建(一)之仓储层的搭建
大神勿喷,小神默默学. 会了就是不值一提的东西,不会就是绝对的高大上. 最后上传源码.希望能给读者带来一些新的认识及知识. 还没上过头条..各位大神,请点支持一下小弟. 陆续更新.更新到你会为止!! ...
- ASP.NET MVC系列 框架搭建(三)之服务层的搭建
邯郸学步 吾虽是一不知名的菜鸟,但,吾亦有一个从后台程序员成为一名小小架构师梦想,深知架构师不是想想就成的. 吾已工作过一阵子,吾妄想在真正毕业之后工作一年左右就能拿到那个数ten thousand的 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
随机推荐
- 爱重启的windows,伤不起
.
- oracle-11g-配置dataguard
1.环境信息:系统:oracle-linux 5.7 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit P ...
- Win8.1 IIS6 SQL SERVER 2012 执行 SqlServices.InstallSessionState 出错
新装了WIN8.1,感觉很不错. 新建了第一个站点是,在执行 SqlServices.InstallSessionState("localhost", null, SessionS ...
- busying
罪过 ,最近好忙 ,好久没有发表东西了, 连英语单词都写错了
- SpringMVC+redis整合
在网络上有一个很多人转载的springmvc+redis整合的案例,不过一直不完整,也是被各种人装来转去,现在基本将该框架搭建起来. package com.pudp.bae.base; import ...
- MITK Tutorial
MITK 设计来使用模块化和高度的代码重用,既能作为 pure software library或complete application framework.它的结构概览图如下: ITK:提供分 ...
- [转载]关于安装Android Studio的一些问题的解决方法
最近在研究Android编程,在Android Studio安装和使用时遇到了麻烦,从园子里找到了<关于安装Android Studio的一些问题的解决方法>的,很多问题找到了解决办法. ...
- 【转载】错误 CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/.........dll”--“拒绝访问。 ”
win7中安装asp.net的问题 编译器错误信息: CS0016: 未能写入输出文件问题解决办法 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地 ...
- win7 安装Oracle 10G,11G
安装 10G : 安装说明: http://wenku.baidu.com/view/a73d048bd0d233d4b14e69a8.html 按这个安装成功过. 11G R2: 在Win7 6 ...
- PE文件结构详解(四)PE导入表
PE文件结构详解(二)可执行文件头的最后展示了一个数组,PE文件结构详解(三)PE导出表中解释了其中第一项的格式,本篇文章来揭示这个数组中的第二项:IMAGE_DIRECTORY_ENTRY_IMPO ...