2008.1.17
一、基于 Struts 的 JSP 文件三大特点:
1.没有任何 java 程序代码
2.使用了许多 Struts 的客户化标签,例如: <html:form> 和 <logic:present>
3.没有直接提供文本内容,取而代之的是 <bean:message> 标签。
二、Struts 客户化标签是联系视图组件和 Struts 框架中其他组件的纽带。这些标签可以访问或显示来自控制器和模型组件的数据。
三、简单介绍 Struts 的几个标签。
1.<html:errors> : 用于显示 struts 框架中其他组件产生的错误信息。 只要在 jsp 文件里敲入 <html:errors/> 即可输出其他组件产生的错误信息。
2. <html:form> : 用于创建 Html 表单,它能把 Html 表单的字段和 ActionForm Bean 的属性关联起来。
3.<html:text> : 该标签是 <html:form> 的子标签,用于创建 Html 表单的文本框。它和 ActionForm bean 的属性相关联。
<html:form action="/HelloWorld.do" focus="userName" >
<bean:message key="hello.jsp.prompt.person" />
<html:text property="userName" size="16" maxlength="16" /><br>
<html:submit property="submit" value="Submite"/>
<html:reset/>
</html:form><br>
4.<bean:message> 用于输出本地化的文本内容 。 <bean:message key="hello.jsp.page.heading" />
5. <bean:write> 用于输出 javaBean 的属性值。
6.<logic:present> 用于判断某范围是否存指定的 javaBean
<logic:present name="person" scope="request">
<h2> Hello <bean:write name="personbean" property="userName" /> </h2>
</logic:present>
四、用户数据的验证分为两种,表单验证和业务逻辑验证。
1.业务逻辑验证:如果用户在表单输入的姓名为:"Monster",按照业务规则,我们不能和 Monster 打招呼, 因此产生逻辑错误。
2.表单验证:如果用户没有在表单姓名就提交表单,将产生表单验证错误。该类型的错误一般由 ActionForm bean 处理。
public ActionErrors validate( ActionMapping mapping , HttpServerletRequest request ){
ActionErrors errors = new ActionErrors();
if( ( userName == null ) || ( userName.length() < 1 ) ){
errors.add( "username" , new ActionMessage( "hello.no.username.error" ) );
}
return errors ;
}
五、当用户提交了 Html 表单后,Struts 框架自动将表单的数据填充到 ActionForm Bean 中,然后根据配置调用 ActionForm Bean 的 Validate() 方法对数据进行验证。如果 validate()方法返回的 ActionErrors 对象为 null , 或者不包含任何 ActionMessage 对象,就表示没有错误,数据通过验证。否则就表示发生错误,Struts会把 ActionErrors 对象保存到 request 范围内,然后把请求转发到恰当的视图组件,视图组件通过 <html:errors> 标签把 request 范围内的 ActionErrors 对象中包含的错误消息显示出来,提示用户修改。