zoukankan      html  css  js  c++  java
  • 今日思考: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Ⅰ呢? 

        先来看一小段代码: 

    Java代码  收藏代码
    1. <sky:init method="com.sky.platform.Login.init">  
    2. <html>  
    3. <head>  
    4. <title>${Title}</title>  
    5. <script>  
    6. Sky.onReady(function(){  
    7.     $("btnLogin").on("click", function login(){  
    8.         var dc = Form.getData("loginForm");  
    9.         Server.sendRequest("com.sky.platform.Login.submit",dc,function(response){  
    10.             if(response&&response.Status==0){  
    11.                 alert(response.Message);  
    12.             }  
    13.         });  
    14.     });  
    15. });  
    16. </script>  
    17. </head>  
    18. <body>  
    19. <form id="loginForm" method="post" style=" display:block;height:100%;">  
    20. <input name="UserName" type="text" />  
    21. <input name="Password" type="password" />  
    22. <input id="btnLogin" type="button"/>  
    23. </form>  
    24. </body>  
    25. </html>  
    26. </sky:init>  



        看看这段代码是怎么解决早期Model 1的混乱的 

    Java代码  收藏代码
    1. <sky:init method="com.sky.platform.Login.init">  


        com.sky.platform.Login类可以看做是这个页面的后台绑定类,其思路来源于Aspx.Net 
    init方法用来做页面的初始化动作 
    页面中像这种需要获取的数据就可以这样来实现:

    Java代码  收藏代码
    1. ${Title}  



        Struts的控制转发很重要的一部分功能就是获取数据放置页面属性范围中,而现在转而用这种方式就可以实现Strtus的获取数据功能。 

        有人会问,像列表之类的,你一个${}怎么能够实现呢?答案是:我们可以在前台实现对应的Ajax风格的列表控件,如此之类...... 

        像表单其他我们也可以通过Ajax直接提交后台绑定类的方法的方式来实现 

    Java代码  收藏代码
    1. Server.sendRequest("com.sky.platform.Login.submit",dc,function(response){  
    2.             if(response&&response.Status==0){  
    3.                 alert(response.Message);  
    4.             }  
    5.         });  


        这种编程思想与Struts系MVC框架的本质的区别就是完全抛弃了其需要的控制转发配置,因为Struts用来配置控制转发的文件本身只是为了实现其MVC的功能而存在的,那么现在我们已经有了一种替代的解决方案来解决早期的Model1的混乱局面,那么Struts系MVC框架的控制转发是否还有存在的必要呢? 

        其实这个思路的类似解决方案就是JSF,但是JSF并没有像ASPX.Net那样完全使用后台绑定类的概念,其并没有抛弃类Struts的路由导航配置。 

        这只是个人观点,欢迎大家讨论、斧正,提出自己的见解! 

  • 相关阅读:
    wstngfw中配置snort
    ROUTE: route addition failed
    putty和psftp命令行参数
    a2 Bluebottle OS
    Project Oberon
    【批处理学习笔记】第二十五课:间接传递
    【批处理学习笔记】第二十四课:直接传递
    Java异常抛出及try,catch应用实例
    【Python学习笔记之二】浅谈Python的yield用法
    【批处理学习笔记】第二十三课:用户变量和变量引用
  • 原文地址:https://www.cnblogs.com/rrsina/p/3935012.html
Copyright © 2011-2022 走看看