`
convertto
  • 浏览: 121828 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Struts模型组件与视图组件

阅读更多

模型组件
模型组件代表应用的业务数据和逻辑。Struts框架并没有为设计和创建模型组件提供现成的框架。不过Strtus允许使用其他的模型组件来处理应用的业务领域。
1.JavaBean
2.Hibernate
3.Spring
4.EJB
5.WebServices

视图组件
Struts框架的视图负责向客户显示动态的网页内容。Struts框架的视图主要包括以下几种:
1.JSP
2.ActionForm
3.DynaActionForm
4.Struts标签库

ActionForm

ActionForm是Struts框架提供的DTO,用于在视图层和控制层之间传递HTML表单数据。控制层可以从ActionForm中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm中,然后把它返回给视图。ActionForm还具有表单验证功能,可以为模型层过滤不合法的数据。
1.定义ActionForm类
2.定义ActionForm的属性
3.重写reset()方法
4.实现validate()方法
5.配置ActionForm
6.与ActionForm对应的视图

定义ActionForm类
Struts框架中定义的ActionForm类是抽象的,必须在应用中创建它的子类。

定义ActionForm的属性
想捕获具体的HTML表单数据,ActionForm中的属性必须和HTML表单中的字段一一对应。

重写reset()方法
不管ActionForm存在于哪个范围内,对于每一个请求,控制器都会先调用ActionForm的reset()方法,然后再把用户输入的表单数据组装到ActionForm中。reset()方法用于恢复ActionForm的属性的默认值。

实现validate()方法
validate()方法的作用主要是对用户提交的表单数据进行初步验证,譬如用户提交的数据是否为空,是否数据长度不够等等。当然,这些验证,我们完全可以在表单页面使用javascript脚本语言来实现。

举例:
package form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
//ActionForm类
public class LoginForm extends ActionForm {
//定义属性
private String password;
private String userName;
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getUserName() {
    return userName;
}
public void setUserName(String userName) {
    this.userName = userName;
}
//重写reset方法
public void reset(ActionMapping mapping, HttpServletRequest request) {
    this.userName="";
    this.password="";
}
//重写validate方法
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
    ActionErrors errors=new ActionErrors();
    if(this.userName.equals("")){
        errors.add("userName",new ActionMessage("un"));
    }
    if(this.password.equals("")){
        errors.add("password",new ActionMessage("pwd"));
    }
    return errors;
}
}

配置ActionForm
ActionForm类需要在struts-config.xml中配置后才可以使用。
<struts-config>
  <form-beans>
    <form-bean name="loginForm" type="form.LoginForm" />
  </form-beans>
  <action-mappings>
    <action attribute="loginForm" input="/login.jsp"
      name="loginForm" path="/login" scope="request"
      type="action.LoginAction">
        <forward name="no" path="/no.jsp" />
        <forward name="yes" path="/yes.jsp" />
    </action>
  </action-mappings>
  <message-resources parameter="ApplicationResources" />
</struts-config>

与ActionForm对应的视图
将HTML表单中的数据传递给ActionForm,也需要符合特定的规范。
举例:
<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
  <head><title>JSP for LoginForm form</title></head>
  <body>
    <html:form action="/login">
      userName : <html:text property="userName"/>
      <html:errors property="userName"/><br/>
      password : <html:password property="password"/>
      <html:errors property="password"/><br/>
      <html:submit/><html:reset/>
    </html:form>
  </body>
</html>

DynaActionForm
ActionForm可以简化Web应用的开发,但唯一的缺点是对于大型的Struts应用必须以编程的方式创建大量的ActionForm,如果HTML表单的字段发生变化,就必须修改并重编译相关的ActionForm。
Struts1.1对此做出了改进,引入了动态ActionForm的概念。Struts框架的DynaActionForm类实现了动态ActionForm,DynaActionForm类是ActionForm类的子类。
DynaActionForm的目的就是减少ActionForm的数目,利用它你不必创建一个个具体的ActionForm类,而是在配置文件中配置出所需的虚拟ActionForm。
举例:
struts-config.xml中
<form-beans>
  <form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">    
    <form-property name="password" type="java.lang.String" />
    <form-property name="userName" type="java.lang.String" />
  </form-bean>
 </form-beans>

ActionForm类execute()方法中
DynaActionForm loginForm = (DynaActionForm) form;
String userName=(String)loginForm.get("userName");
String password=(String)loginForm.get("password");

JSP页面
<html:form action="/login">
  userName : <html:text property="userName"/><br/>
  password : <html:password property="password"/><br/>
  <html:submit/><html:reset/>
</html:form>

分享到:
评论

相关推荐

    深入Struts 1.1

    Struts 是基于Model 2之上的,而Model 2是经典的MVC(模型-视图-控制器)模型的Web应用变体,这个改变主要是由于网络应用的特性--HTTP协议的无状态性引起的。Model 2的目的和MVC一样,也是利用控制器来分离模型和...

    struts的教程.doc

    Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet...

    java Struts教程

    Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...

    精通Struts基于MVC的Java Web设计与开发 孙卫琴 光盘

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    精通 Struts:基于 MVC 的 JavaWeb 设计与开发(PDF)

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    struts 教程 很好很详细

    Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...

    struts2.4+spring3.1+hibernate4.1的SSH框架

     采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可...

    struts 入门教程

    Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...

    精通Struts_基于MVC的Java Web设计与开发

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...

    精通struts:基于mvc的java web设计与开发part3

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    精通struts:基于mvc的java web设计与开发part2

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    精通struts:基于mvc的java web设计与开发part1

    第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...

    Web服务构建Struts应用程序例程源码

    模型组件描述并处理应用程序数据。视图指的是用户界面;它反映的是模型数据并把它递交给用户。控制器是将视图上的行为(例如,按下 Submit 按钮)映射到模型上的操作(例如,检索用户详细信息)。模型更新后,视图也...

    Struts2基础资料

    Struts2概述,基本框架,应用视图组件、标签库、模型组件等。

    struts2-1.zip

    控制器:接收来自用户的输入,调用模型层,响应对应的试图组件(Servlet Filter) 使用Filter 作为控制器的MVC filter本身是一个过滤器 servlet能做的filter都能做 反之不能 对于servlet来说,拦截资源不是其所...

    Struts、Spring、Hibernate、SSH框架总结

    基于Struts开发的应用由3类组件构成:控制器组件、模型组件(Java Bean)和视图组件(ActionForm)。 控制器组件包括ActionServlet,是Struts的核心控制器,还包括自定义的Action类,自定义的Action类继承自Struts...

    JSP程序设计课件包含Hibernate,Struts的介绍

    视图组件与业务逻辑的关系放在一个叫struts-config.xml的配置文件中声明。 14. ActionServlet职责是把HTTP消息打包起来并传送到框架中合适的处理器。 15. Struts程序启动时,首先从配置文件struts-config.xml文件中...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...

    精通struts 基于MVC的java web设计与开发-->配套幻灯片ppt

    很详细的介绍了struts的控制器、视图、模型等组件,struts的bean标签、html标签、logic标签,struts的国际化以及异常处理等。 配合《孙卫琴:精通struts 基于MVC的java web设计与开发》一书使用更佳!

Global site tag (gtag.js) - Google Analytics