所有关于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的面纱。
最新推荐文章于 2019-10-13 22:18:43 发布