[Apache-Fulcrum-Intake]表示层和业务层的数据传递组件
来源:互联网 发布:php微信公众号开发 编辑:程序博客网 时间:2024/05/17 15:41
Intake Service
Intake uses an xml specification to perform web form input validation and mapping input data to a bean's properties. In other words, Intake will allow a web application to take web form input, validate it and then map the data to an object. Tools like the Torque help provide mapping of Objects to the database and Intake helps map web form data to Objects. Intake can be used standalone by any application that supports Avalon components. However it has extensive integration with the Turbine application server. This howto focuses on using it with Turbine.
The visual picture of where Intake fits into a Turbine web application looks something like this:
------------------
HTML Form
------------------
Intake
------------------
Business Objects <- Torque Generated
------------------
Peers <- Torque Generated
------------------
RDBMS
------------------
There are several advantages to using Intake. First off, it provides for a centralized management system for dealing with form data. All of the configuration of Intake is done through a single XML file. Next, Intake is good for validating the form data. Intake provides the ability to do regular expression matching in order to make sure that form fields contain the data that they should contain. For example, if someone should only enter a number into a form field, it can be validated with a regular expression. Lastly, Intake can provides a centralized source for error messages. If the validation fails, the error message defined in the XML file can be shown to the user.
使用Intake有若干优势。首先,Intake提供了一个处理表单数据的集中管理系统。所有Intake的配置都在一个专门的XML文件中完成。其次,Intake便于验证表单数据。Intake能够进行表达式匹配以便保证表单域中包含合法的数据。比如说,如果某人应当在一个表单域中填入数字,填入内容可以用一个合格的表达式进行验证。最后,Intake能够把错误信息集中到一起。如果验证失败,定义在XML文件中的错误信息将被显示给用户。
Usage
Intake is implemented as a Avalon component. Access to it is provided by a Turbine Pull Tool. An XML specification is parsed during the service initialization and used by the pull tool while processing request data and generating the response.
Intake is made available in the Velocity context with the default value of $intake. The name of the variable that is used is what is configured for the tool. For example, the current configuration is "tool.request.intake". To change the name of the variable to "foo", it would be "tool.request.foo".
Intake is made available in Java code by adding the following imports to the top of a .java file:
import org.apache.fulcrum.intake.model.*;
import org.apache.turbine.services.intake.IntakeTool;
Xml File
The following example come from Scarab. These are a couple of groups from Scarab's intake.xml:
<input-data basePackage="org.tigris.scarab.">
<group name="AttributeValue" key="attv"
mapToObject="om.AttributeValue">
<field name="Value" key="val" type="String">
<rule name="maxLength" value="255">Value length cannot be > 255</rule>
<required-message>This module requires data for this
attribute.
</required-message>
</field>
<field name="Url" key="url" type="String" mapToProperty="Value">
<rule name="maxLength" value="255">Url length cannot be > 255</rule>
<rule name="mask" value="^$|http.+">Please enter an url starting with "http"</rule>
<required-message>This module requires a valid url.</required-message>
</field>
<field name="OptionId" key="optionid" type="NumberKey">
<rule name="mask" value="^$|[0-9]+">Please select a valid choice</rule>
<required-message>This module requires that you select an option
for this attribute.
</required-message>
</field>
</group>
<group name="Login" key="login">
<field name="Username" key="u" type="String">
<rule name="minLength" value="1">Please enter an email address</rule>
<rule name="mask" value=".+@.+/..+">Please enter a valid email address</rule>
</field>
<field name="Password" key="p" type="String">
<rule name="minLength" value="1">Please enter a password</rule>
</field>
</group>
</input-data>
A group is a set of fields that have been aligned so that they form a logical unit. The first group includes some of the properties from a om.AttributeValue business object (BO). This object is a Java Bean object with get/set methods for each of the properties in the object. In this case, the object has been auto-generated by Torque from Scarab's SQL schema.
The group tag has a class attribute which is the name that will be used within templates and java code to refer to the group. It also contains a key attribute which will be used in the query parameters. The key is not referenced in any code, so it can be a short name (even 1 character) as long as it is uniquely identifies the group from the rest.
An object that the group's fields will map can also be specified. This will be a default; the individual fields within a group can map to different objects.
Fields have attributes: name and key which serve similar function to the group's class and key attributes. It has mapToObject and mapToProperty fields that can be used to associate a business object to the field for prepopulating the field as well as assigning the field data to the bean after successful validation. The field must have a type, which can be simple types such as String and Integer. It is planned that more complex types, such as Email, Url, or Date, will be added that will add functionality that is difficult or not possible with a simple regex mask.
The field can define rule elements. The basic fields include rules for minimum and maximum, lengths and values, as well as a regex mask.
- [Apache-Fulcrum-Intake]表示层和业务层的数据传递组件
- 三层架构:表示层-业务逻辑层-数据访问层
- 三层架构:表示层-业务逻辑层-数据访问层
- 三层架构:表示层-业务逻辑层-数据访问层
- 三层架构:表示层-业务逻辑层-数据访问层
- 对SSH三种框架及表示层、业务层和持久层的理解
- SSH三种框架及表示层、业务层和持久层的理解
- SSH三种框架及表示层、业务层和持久层的理解
- SSH、SSM三种框架及表示层、业务层和持久层的理解
- Activiti 5.17 业务层和数据层的关系
- 【Java】业务层和数据访问层的区别
- 表示层调用控制层,控制层调用业务层,业务层调用数据访问层MVC
- 数据层组件设计及其数据传递的实现简介
- 设计数据层组件并在层间传递数据
- 设计数据层组件并在层间传递数据
- 设计数据层组件并在层间传递数据
- 设计数据层组件并在层间传递数据
- 设计数据层组件并在层间传递数据
- wertwert
- 微软的常用资源列表
- MD5 报文摘要算法
- frame使用
- ASP.NET中弹出窗口技术
- [Apache-Fulcrum-Intake]表示层和业务层的数据传递组件
- 基于字符串的hash算法
- Dot net 正则表达式的应用
- SQL Server 存储过程的经典分页
- ASP调用oracle存储过程
- 基于整数的hash算法
- 告诉你一个真实加拿大
- 揭开戴尔代工厂黑幕 每天13元每月2千人离开
- [广州.天河.棠下]停电不爽,但在好又多看中了一款LG洗衣机,售货员很有经验