struts总结
一.定义:封装了mvc框架,是mvc框架的经典实现之一.
二.为什么要是用struts?
Struts对于其他框架来说比较稳定,还有以下优点:
1.封装了MVC开发模式
2.提供丰富的标签库
3.提供页面导航
4.提供异常处理机制
5.提供数据库连接池的管理
6.支持国际化
三.struts三大应用组件、六大核心类以及七大核心组件:
1.控制层组件 (ActionServlet:struts的核心控制器,拦截用户请求)
2.模型层组件 (
ActionForm:填充form,
ActionMapping:用于存储配置文件中的映射信息,进行派发请求,
Action:处理业务逻辑,
ActionForward:页面转发,
ActionError:处理错误信息)
3.视图层组件 (标签库)
四.struts标签库:
1.logic 标签:逻辑判断,迭代循环等
2.bean 标签:用于创建JavaBean实例,或引用JavaBean实例
3.html 标签:用于封装Form表单组件等.
4.template 标签: 模板标签,用户tiles布局框架.
5.nested 标签: 嵌套标签
6.自定义标签
五.struts执行流程:
1.初始化内部资源文件、加载struts-config.xml等其他配置文件以及初始化ActionServlet
2.页面发送请求
3.根据struts-config.xml配置的form-bean填充Form
4.ActionServlet根据struts-config.xml配置的ActionMapping调用相对应的Action,并执行execute()方法.
5.在execute方法中进行业务处理.
6.ActionForward根据struts-config.xml 配置的跳转页面进行页面跳转,返回响应.
7.jsp页面使用struts标签库对返回的响应进行处理.
六.ActionError与ActionMessage的区别:
1.语义的区别:ActionError指的是错误,ActionMesage指的是消息.
2.版本的区别:ActionError是1.1出来的,ActionMessage是1.2出现的.1.2版本后以不推荐使用ActionError.
3.继承关系: ActionError是继承ActionMessage的.
4.页面输出区别:ActionError用<bean:error>进行输出,ActionMessage用<bean:message>进行输出.
七.全局转发与局部转发:
globle-forword配置是全局跳转,全局跳转作用于action.
action-mapping内的forward配置就是局部转发,只作用于当前action
如果局部转发与全局转发相同时,优秀选择局部转发。
八.全局异常与局部异常
global-exceptions配置是全局异常,全局异常作用于所有的action
action-mapping内的exception配置就是局部异常,只作用于当前action
如果局部异常与全局全局相同时,优秀选择局部异常。
九.Action与DespatchAction:
继承Action的类必须需要重写execute()方法.
继承DespatchAction的类,可以不重写execute(),需要调用的方法直接配置在配置文件中.
DespatchAction比Action要灵活,且减少了大量的重复代码.
十.动态Form:
动态Form是struts1.1提出的一项新技术,它可以不通过编程的方式,而只要根据struts-config配置文件配置动态form就可以生成FormBean实例.动态form主要用于映射页面数据。
优点:
提高应用程序的开发效率与应用程序的可维护性.
普通form与动态form:
ActionFrom:不用验证框架作验证,如果需要验证就重写validate()方法.
validatorForm:使用验证框架时必须继承它,但只能做同一种验证。即只提交一个按键时的验证。
validatorActionForm:使用验证框架验证时,可以更为精确的去处理业务逻辑,针对的是不同的按键的path(即可以作不同的验证,如,既可以验证是否为空,又可以同时验证是否小于几位)
DynaActionFrom:不用验证框架作验证,如果需要验证,就写一个form类继承它,重写validate方法,struts-config.xml配置时改为你写的类.
DynaValidatorForm:与validatorForm类同
DynaValidatorActionForm:与validatorActionForm类同
如果要使用struts的验证框架,那么我们自己的form 必须继承validatorForm 或validatorActionForm 或DynavalidatorForm 或DynavalidatorActionForm
对于validatorForm 和DynavalidatorForm 是针对form的验证
对于 validatorActionForm 和DynavalidatorActionForm 是针对path的验证
十一.使用验证框架的好处:
1.更容易维护.
2.标准化.
3.减少重复代码的数量.
4.客户端验证与服务端验证自动切换.
缺点:增加程序的复杂性.
十二.struts布局框架: tiles框架
tiles框架是struts的一个页面布局插件,将多个页面组合组合成一个页面,形成一个模板。它提高了代码可重用性,可扩展性和可维护性但同时也增加了开发难度.
使用tiles框架的好处:
1.可定义重用tiles组件
2.动态装载页面
3.支持国际化
4.能创建可重用模块
十三.struts缺点:
1.struts1的配置与结构过于复杂
2.Action是单例模式,必须设置成线程安全的
3.ActionServlet依赖于web容器,暴露了servlet API,测试不方便