模型组件
模型组件代表应用的业务数据和逻辑。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 是基于Model 2之上的,而Model 2是经典的MVC(模型-视图-控制器)模型的Web应用变体,这个改变主要是由于网络应用的特性--HTTP协议的无状态性引起的。Model 2的目的和MVC一样,也是利用控制器来分离模型和...
Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet...
Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...
Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可...
Struts的与Web App的关系 5 Struts的体系结构 5 从视图角度(View) 6 从模型角度(Model) 6 从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。第8章到第9...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
模型组件描述并处理应用程序数据。视图指的是用户界面;它反映的是模型数据并把它递交给用户。控制器是将视图上的行为(例如,按下 Submit 按钮)映射到模型上的操作(例如,检索用户详细信息)。模型更新后,视图也...
Struts2概述,基本框架,应用视图组件、标签库、模型组件等。
控制器:接收来自用户的输入,调用模型层,响应对应的试图组件(Servlet Filter) 使用Filter 作为控制器的MVC filter本身是一个过滤器 servlet能做的filter都能做 反之不能 对于servlet来说,拦截资源不是其所...
基于Struts开发的应用由3类组件构成:控制器组件、模型组件(Java Bean)和视图组件(ActionForm)。 控制器组件包括ActionServlet,是Struts的核心控制器,还包括自定义的Action类,自定义的Action类继承自Struts...
视图组件与业务逻辑的关系放在一个叫struts-config.xml的配置文件中声明。 14. ActionServlet职责是把HTTP消息打包起来并传送到框架中合适的处理器。 15. Struts程序启动时,首先从配置文件struts-config.xml文件中...
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的控制器、视图、模型等组件,struts的bean标签、html标签、logic标签,struts的国际化以及异常处理等。 配合《孙卫琴:精通struts 基于MVC的java web设计与开发》一书使用更佳!