最后一天Struts的冲刺了。坚持下去,阳光总在风雨后······
今天学习的主要内容是Validator框架,DispatchAction类,MappingDispathAction类,动态ActionForm和Struts国际化。老样子,下面对今天所学知识做个简单的复习吧!
1. Validate框架:
(1)<form>元素:为表单配置验证规则,它的 name 属性指定了表单的名字.<form>元素可以包含一个或多个<field>子元素
(2)<field>元素:配置表单中字段的验证规则
property:指定 ActionForm Bean 中需要进行验证的字段的名字
depends:指定字段的验证规则,多个验证规则之间以逗号隔开
(3)<msg>元素:指定验证规则对应的消息文本。该消息文本将替代在 validator-rules.xml 文件中为验证规则配置的默认的消息文本
name:指定验证规则的名字
key:当 resource 为 true 时,该属性指定消息 key,该消息 key 应该在 Resource Bundle 中存在,当 resource为 false 时,该属性直接指定消息文本
resource:当该属性为true时,表明使用来自于 Resource Bundle 的消息;如果为 false,表明 直接在 key 属性中设置消息文本,默认为 true
(4)arg 元素:替换符合消息中的参数
name,key,resource 元素同上
position 元素:指定替换符合消息中的参数的位置
(5)var 元素:向验证规则传递参数
<arg> 元素也可以访问<var>元素,语法为${var:var-name}
2. Action——>DispatchAction: 如果每个请求都新建立一个 Action 类, 会导致 Action 类很多, 不便于开发和维护,使用 DispatchAction 可以使多个请求对应一个 Action;缺点: 因为多个请求共用一个 DispatchAction, 导致在 struts-config.xml 文件中只做了一个 action 配置,这将使多个请求可能共用一个 ActionForm, 从而使表单验证出现冲突; 在配置文件中不能直接看出该 action 到底应答多少个请求
DispatchAction——> MappingDispatchAction: 可以解决 DispatchAction 的不足, 它将为每个请求都做一个配置, 但这些配置使用的是一个 Action 类; 缺点: 导致 action 的配置增多, 维护配置文件难度加大.
3. 动态ActionForm范例:
<form-beans>
<form-bean
name="loginForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name = "email“ type="java.lang.String"/>
<form-property name = "password“ type="java.lang.String"/>
</form-bean>
</form-beans>
4. Struts国际化过程中须注意:
(1)文件上传的步骤:
1. jsp 页面 form 标签添加 enctype="multipart/form-data" 属性.
2. 导入 commons-fileupload.jar 和 commons-io.jar 包
3. 在 ActionForm 中添加 org.apache.struts.upload.FormFile 类型的字段
4. 在 Action 中利用 io 进行文件的上传操作!
(2)解决中文乱码问题
1. 使用 Filter
2. 使用自己定制的 ActionServlet
3. 使用自己定制的 RequestProcessor
好了,Struts到此结束,明天休息一天,后天JS加强,明天调整一天,后天再见。