Struts1.x ActionForm详解

1.ActionForm

原理

继承于org.apache.struts.action.ActionForm,在jsp发出请求后,实例化servlet并载入struts-config.xml。通过执行action方法来获取mapping中的actionform的name,首先会在session、request中查找是否存在对应的actionform;有则直接return,反之根据名字反射构造相应的实例类,并将request中的数据设置到actionform中。如下图

2.使用

ActionForm使用要求

1.必须扩展org.apache.struts.action.ActionForm积累

2.定义与html表单中输入控件name一直的可读写公共属性

可选参数

reset :初始化必要属性

validate:校验必要属性

作用

字段收集器

struts自动根据从http传输过来的属性自动设置相应的值,开发所做的就是在表单上的控件名称和ActionForm上的公共属性相对应即可。

数据缓冲

虽然在web端可以通过js来控制数据的验证,但总会出现这样兼容性以及脚本无法使用的情况。而ActionForm配备的validate就可以屏蔽这个问题。

类型转换

因为从http传过来都是key-value,value通常为文本。而在ActionForm中属性都是会有自己定义的数据类型的,boolean或者string等。这里主要使用的还是beanutils这个第三方的开发包,不同的数据类型调用不同的转换包。

原理:在请求servlet时候,init的方法会注册相应的转换类,也就是对应的几个基本数据类型的转换器。转换器的最基本原理还是实现了convert类,如:这个数据需要转换为boolean类型,传过来的时候会将数据类型和数据传过来。如果传过来就是boolean类型,那么直接返回;如果不是则(boolean)value.tostring()强转即可;因为这个时候已经知道目标数据类型了,所以这个时候强转是不会出现数据丢失的情况的。

自定义的类型转换,上面由于只能针对基本的数据类型进行转换。而对于一些自定义的数据类型,就需要自己定义相应的转换器进行转换了。这里转换的实现思路,仿造struts实现的原理。然后在servlet初始化时,注册到相应的map结构中即可。

demo

java 转换器

                    package cfl.convert.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServlet;

import org.apache.commons.beanutils.Converter;

/*
 * 初始化转换器-陈方林-2014年10月15日
 */
public class personalConvert implements Converter {

	@Override
	public Object convert(Class type, Object value) {
		// TODO Auto-generated method stub
		if(value instanceof Date){
			return value;
		}
		if(value instanceof String){
			try {
				return new SimpleDateFormat("yyyy-MM-dd").parse((String)value);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}

}

servlet

package cfl.convert.util;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.commons.beanutils.ConvertUtils;

public class personalConvertServlet extends HttpServlet {

	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		System.out.print("success");
		ConvertUtils.register(new personalConvert(), java.util.Date.class);

	}

}

配置 自定义servlet初始化 注册对应的转换器

<servlet>
  	<servlet-name>personConvert</servlet-name>
  	<servlet-class>cfl.convert.util.personalConvertServlet</servlet-class>
  	<load-on-startup>3</load-on-startup>
  </servlet>

DynaActionForm

以配置来替换ActionForm,需要定义一系列的属性。但涉及到验证等属性时,需要借用第三方的jar包(validator)来实现。

1.配置属性

demo

          <form-beans>
		<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
			<form-property name="username" type="java.lang.String"></form-property>
			<form-property name="age" type="java.lang.Integer"></form-property>
		</form-bean>
	    </form-beans>

同样这样也能够通过EL表达式从actionform里面取得数据,也就是说动态form和静态form没有什么区别,无非在实现上需要使用一些第三方的jar。

3.总结

actionform根据form表单对表单数据进行了单独处理,减轻了jsp的负担,也降低了数据和显示和显示逻辑的耦合度。易于开发,需要注意的就是需要约定form中输入控件的name和actionform类的公共属性保持一致。也正是这种约定降低了编程和开发的难度,正如开发中常讲:约定优于配置。

时间: 2024-08-06 20:08:03

Struts1.x ActionForm详解的相关文章

详解Struts1中的struts-config.xml配置文件【一】

搞清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义如下: <!ELEMENT struts-config (data-sources?,form-beans?,global-exceptions?,global-forwards?, action-mappings?,controller?,message-resources*,plug-in*)> 以上8

Struts1.2 struts-config.xml配置详解

Struts1.2 struts-config.xml配置详解 [Struts1.2总结系列]struts-config.xml配置 struts-config.xml是Struts的主要配置文件,在该文件中,可以配置数据源.form-bean.action和plug-in(插件)和资源文件的信息.其文件主要结构如下所示: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config

struts1.2 struts-config.xml配置详解(2)

<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config.dtd"> <!-- st

MVC详解(转)

原文链接:MVC详解 MVC与模板概念的理解 MVC(Model View Controller)模型-视图-控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC 的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发

J2EE学习篇之--Struts2技术详解

前面说到了Struts1的相关知识,下面来说一下Struts2的相关知识,我们知道现在Struts2使用的比Struts1多,Struts2已经替代Struts1成为主流的框架了... 摘要 Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架.不过有一点大家需要注意的是:尽管Struts2和Struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的.那么既然有了struts1,为何还要推出struts

【SSH2(理论篇)】--Struts2配置详解

上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容. 一.Struts体系简介 struts,是Apache软件基金会(ASF)赞助的一个开源项目,它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-V

(转)struts2.0配置文件、常量配置详解

一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.propreties文件配置,是因为为了保持与WebWork的向后兼容 2.在实际开发中,在web.xml中配置常量相比其他两种,需要更多的代码量,会降低了web.xml的可读性 3.通常推荐在struts.xml文件中配置struts2的常量,而且便于集中管理 sturt2中搜索加载常量的顺序是: str

转载:Spring MVC配置详解

以下内容引自:http://www.cnblogs.com/superjt/p/3309255.html spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hiber

超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享

原创不易,转载请注明出处:超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 代码下载地址:http://www.zuidaima.com/share/1759689106541568.htm 依赖注入,DI(Dependency Injection),它的作用自然不必多说,提及DI容器,例如spring,picoContainer,EJB容器等等,近日,google诞生了更轻巧的DI容器--Guice! 废话不多讲了,先看看Guice是如何实现