struts2是轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。
轻量级:低侵入性,与业务代码的耦合度很低,业务代码中基本不需要import它的包。
MVC框架:struts2实现了MVC,并且提供了一系列API,采用模块化的方式简化业务开发过程。
M:模型层的职责是负责业务逻辑。包含两层:业务数据和业务处理逻辑。比如:实体类,Dao,service都属于模型层。
V:视图的职责是负责显示界面和用户交互(收集用户信息)。属于视图的组件是不包含业务逻辑和控制逻辑的jsp。
C:控制器是模型层和视图层之间的桥梁,用于控制流程。比如:在servlet项目中的单一控制器ActionServlet。
Struts和servlet对比:
优点:1.业务代码解耦,适合团队开发
将请求分发给不同的处理类,从而降低了业务代码的耦合度。
2.提高开发效率
提供了一系列的API,可以大大的提升项目的开发效率。比如:使用拦截器自动给请求的参数转型。
缺点:1.执行效率偏低
需要使用反射,解析xml等技术,会降低执行效率。
2.结构复杂,需要时间了解struts2的API。
struts2自身的优势:
1.健壮性
2.易用性
3.扩展性 struts2使用AOP的思想,使用拦截器来扩展业务控制器。
4.侵入性 struts2对业务代码依赖性很低。
struts.xml配置的解释:
package:包,用于对action进行封装
1.name:包名,根元素下可以有多个包,彼此之间不能重名。
2.extends:继承 用于指定继承的包,相当于将继承包下的配置信息复制到了当前包下。
3.namespace:命名空间 用于规定Action的访问路径,必须以/开头。
<package name="default" namespace="/" extends="struts-default">
action:业务控制器,用于注册控制器组件(类)
1.name:action的名称,用于规定Action的访问路径
一个包下面可以有多个action,彼此之间不能重名
2.class:业务控制器组件,用于指定业务控制器对应的类
3.method:方法,用于指定访问当前aciton时要调用的方法
<action name="index" class="com.ctgu.IndexAction">
result:输出组件,用于转发,重定向,直接输出
1.name:名称 ,一个action下可以有多个result,彼此之间不能重名
2.默认做转发操作,标记内容设置成转发的页面
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
ps:将自己理解的东西整理下来还是很不错呢