java解惑:揭开Struts MVC Model2的面纱。

        所有关于Struts的帖子,总是将MVC Model2描叙的特别神乎,俨然是新一代的设计模式。本人新学,翻了几篇帖子,还是没能弄明白什么是Model2,于是下载Struts源码,原来是在原有视图( html )和Control(jsp/servlet)之间,添加了一个ActionSerlvet作为新的Control,所有其它动作,都要经过ActionServlet来分发。

        一个具体的图划出来,什么都清楚了,
        
                 Request                                                                      
        http-------------->ActionServlet----------------> Action----------------------->Model.
                                                                    
        也可以通过web.xml看出来,比如我用JBuilder生成的Struts 工程下web.xml那如如下:
        <servlet>
              <servlet-name>action</servlet-name>        //action--->ActionSerlvet
              <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>           
              <init-param>...
                  
         </servlet>
         <servlet-mapping>
              <servlet-name>action</servlet-name>        //action.do--->action
              <url-pattern>*.do</url-pattern>
         </servlet-mapping>
        可见,所有Action1.do,Action2.do,Action3.do都映射会到ActionServlet上,而ActionServlet内部维护着一个ActionMap,可以识别不同的Action,调用相应的Action的execute方法。

        所以,Struts真正改变Web结构的地方就在于,使用一个总控的ActionServlet管理所有的行为,由它决定哪个Action被真正调用。至于其优势,我的理解就是,由以前编写大量的Servlet改成了编写大量Action,由于Servlet在html中必须写死,而Action可以通过配置文件来管理,在一定程度上增加了整体结构的灵活性。

        developerWorks上的struts好文章:
        http://www-900.ibm.com/developerWorks/cn/java/j-strutscol/。
                                                                                    
        

你可能感兴趣的:(java解惑:揭开Struts MVC Model2的面纱。)