一、使用struts2的原因
1. 侵入性框架:开发程序的同时,引进的框架。如果在使用该框架时,要继承框架提供的实体类或实现框架提供的接口,这就说明该框架是侵入式框架,因为程序本身对框架有了依赖,当去除框架时,程序也就无法运行,这个也就是我们说的重量级框架,如struts1中,action和actionForm必须要继承Action和ActionForm一样。相反的非侵入式框架是轻量级框架的重要特点,如hibernate和spring,当我们想去掉hibernate和Spring框架时,只需修改相应的程序,程序仍可运行。
2. 耦合性(Coupling):也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。
3. 综上所述:Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题:
①:Struts1支持的表现层技术单一。(Struts1出现的年代比较早,当时的技术单一)
②:Struts1与Servlet API的严重耦合,使应用难于测试。
③:Struts1代码严重依赖于Struts1 API,属于侵入性框架。
二、Struts2请求过程源码分析
参考:http://www.cnblogs.com/liuling/p/2013-8-10-01.html
三、struts 事例(struts2-core.2.5.10.1)
1. 导入基础包:
2. 配置web.xml
早期 webwork:com.opensymphony.webwork.dispatcher.ServletDispatcher
现在 webwork:com.opensymphony.webwork.dispatcher.FilterDispatcher
早期 struts2:com.opensymphony.webwork.dispatcher.FilterDispatcher
2.5 之前:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2.5 开始:org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
3. 创建struts.xml
4. 创建login.jsp
5. 创建指定action