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的迷思: http://www.iteye.com/topic/6284
jsplet:对Model 2模式的批判: http://www.iteye.com/topic/11726

转载于:https://my.oschina.net/darkness/blog/802209

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值