您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第4章 Struts模型组件与视图组件
第4章Struts模型组件与视图组件目标模型组件视图组件ActionFormDynaActionForm模型组件模型组件代表应用的业务数据和逻辑。Struts框架并没有为设计和创建模型组件提供现成的框架。不过Strtus允许使用其他的模型组件来处理应用的业务领域。JavaBeanHibernateSpringEJBWebServices视图组件Struts框架的视图负责向客户显示动态的网页内容。Struts框架的视图主要包括以下几种:JSPActionFormDynaActionFormStruts标签库ActionFormActionForm是Struts框架提供的DTO,用于在视图层和控制层之间传递HTML表单数据。控制层可以从ActionForm中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm中,然后把它返回给视图。ActionForm还具有表单验证功能,可以为模型层过滤不合法的数据。定义ActionForm类定义ActionForm的属性重写reset()方法实现validate()方法配置ActionForm与ActionForm对应的视图定义ActionForm类Struts框架中定义的ActionForm类是抽象的,必须在应用中创建它的子类。packageform;importjavax.servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.action.ActionMessage;publicclassLoginFormextendsActionForm{}定义ActionForm的属性想捕获具体的HTML表单数据,ActionForm中的属性必须和HTML表单中的字段一一对应。privateStringpassword;privateStringuserName;publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}重写reset()方法不管ActionForm存在于哪个范围内,对于每一个请求,控制器都会先调用ActionForm的reset()方法,然后再把用户输入的表单数据组装到ActionForm中。reset()方法用于恢复ActionForm的属性的默认值。publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){this.userName=;this.password=;}实现validate()方法validate()方法的作用主要是对用户提交的表单数据进行初步验证,譬如用户提交的数据是否为空,是否数据长度不够等等。当然,这些验证,我们完全可以在表单页面使用javascript脚本语言来实现。publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){ActionErrorserrors=newActionErrors();if(this.userName.equals()){errors.add(userName,newActionMessage(un));}if(this.password.equals()){errors.add(password,newActionMessage(pwd));}returnerrors;}配置ActionFormActionForm类需要在struts-config.xml中配置后才可以使用。struts-configform-beansform-beanname=loginFormtype=form.LoginForm//form-beansaction-mappingsactionattribute=loginForminput=/login.jspname=loginFormpath=/loginscope=requesttype=action.LoginActionforwardname=nopath=/no.jsp/forwardname=yespath=/yes.jsp//action/action-mappingsmessage-resourcesparameter=ApplicationResources//struts-config与ActionForm对应的视图将HTML表单中的数据传递给ActionForm,也需要符合特定的规范。%@pagecontentType=text/html;charset=gbk%%@tagliburi==html%htmlheadtitleJSPforLoginFormform/title/headbodyhtml:formaction=/loginuserName:html:textproperty=userName/html:errorsproperty=userName/br/password:html:passwordproperty=password/html:errorsproperty=password/br/html:submit/html:reset//html:form/body/htmlDynaActionFormActionForm可以简化Web应用的开发,但唯一的缺点是对于大型的Struts应用必须以编程的方式创建大量的ActionForm,如果HTML表单的字段发生变化,就必须修改并重编译相关的ActionForm。Struts1.1对此做出了改进,引入了动态ActionForm的概念。Struts框架的DynaActionForm类实现了动态ActionForm,DynaActionForm类是ActionForm类的子类。DynaActionForm的目的就是减少ActionForm的数目,利用它你不必创建一个个具体的ActionForm类,而是在配置文件中配置出所需的虚拟ActionForm。DynaActionForm示例form-beansform-beanname=loginFormtype=org.apache.struts.action.DynaActionFormform-propertyname=passwordtype=java.lang.String/form-propertyname=userNametype=java.lang.String//form-bean/form-beansDynaActionFormloginForm=(DynaActionForm)form;StringuserName=(String)loginForm.get(userName);Stringpassword=(String)loginForm.get(password);html:formaction=/loginuserName:html:textproperty=userName/br/password:html:passwordproperty=password/br/html:submit/html:reset//html:form总结模型组件视图组件ActionFormDynaActionForm作业将本章所有示例练习一遍
本文标题:第4章 Struts模型组件与视图组件
链接地址:https://www.777doc.com/doc-4007766 .html