Web开发框架中的架构模式比较(四) (转)

本文对比了ASP.NET、Java Web框架中的输入验证机制,并介绍了各框架提供的多语言支持方式。ASP.NET通过服务器控件实现验证,Java Web框架采用验证规则文件。此外,还探讨了各框架如何实现多语言支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Web开发框架中的架构模式比较(四) (转)[@more@]

页面输入验证 Validation

ASP.NET提供验证功能的服务器控件: CompareValidator验证两个控件输入之间的比较,RangeValidator检查用户的输入是否在指定的上限和下限之间;RegularExpressionValidator 控件检查输入是否与某个正则表达式所定义的模式相匹配(社会保障号、电子邮件地址、电话号码、邮政编码等);RequiredFieldValidator 控件确保用户不会略过某个输入;CustomValidator 控件创建自定义服务器和客户端验证代码。稍后会举例说明。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

Java web框架通常会把验证规则提出来,放在一个验证规则文件里。apache struts提供验证两种方式。一种是重载org.apache.struts.action.ActionForm类的validate方法,一种是定义Validator Plug-In文件,validator-rules.xml。Apache Cocoon也提供了类似的验证规则文件。稍后举例说明。

ASP.net的例子

  摘自.Net框架文档,其余部分省略,只保留了关于RegularExpressionValidator的部分。本例中,id为RegularExpressionValidator1的控件的ControlToValidate属性为TextBox1,所以,RegularExpressionValidator1负责验证TextBox1是否符合正则表达式"d{5}"——5个数字。

 

 
 

 

 runat="server"/>

 
 

 

 
 

 

 
 

 

 id="RegularExpressionValidator1"

 
 

  ControlToValidate="TextBox1"

 
 

  ValidationExpression="d{5}"

 
 

  Display="Static"

 
 

  EnableClientScript="false"

 
 

  ErrorMessage="Zip code must be 5 numeric digits"

 
 

  runat="server"/>

 
 

 

 
 

Apache Struts的例子

下面的例子从Apache Struts的用户文档中摘录出来。Apache Struts提供的Validation机制非常强大,能够实现基于其它输入域的条件验证,即,如果另外一个或几个输入域都符合相应的情况,那么,验证当前域是否符合某种条件。

RM name="dependentlistForm">

  property="firstName" indexedListProperty="dependents"

  depends="requiredif">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

  property="dob"

  indexedListProperty="dependents"

  depends="requiredif,date">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

  property="coverageType"

  indexedListProperty="dependents"

  depends="requiredif">

 

 

  field[0]

  lastName

 

 

  field-indexed[0]

  true

 

 

  field-test[0]

  NOTNULL

 

 

  field[1]

  insureDependents

 

 

  field-test[1]

  EQUAL

 

 

  field-value[1]

  true

 

 

  field-join

  AND

 

Apache Cocoon的例子

下面的例子是Apache Cocoon的教学程序中的文件。对id和name两个域进行验证。同时,这个文件定义了页面元素和数据库数据之间的绑定。下一节就要阐述这个问题。

<root>

 

 

 

 

 

 

 

 

 

  personnel

 

 

   dbcol="id" type="int" mode="manual"/>

 

 

   

 

 

Database Driven Page

正如上一节最后一个例子(Apache Cocoon)所示,很多web开发框架提供页面元素和数据库字段的直接绑定。

.NET 框架包含三个便于显示大量数据的控件:Repeater 控件、DataList 控件和 DataGrid 控件。这三个控件都使用相似的数据绑定过程,绑定到DataSet、sqlDataReader或DataView。下面的代码示例从.Net框架文档摘录,显示如何将 SQL 数据库查询返回的 DataSet 绑定到 DataGrid 控件。

 
 

 
 

 
 

 
 

 
 

 
 

 

 
 

 

Simple SELECT to a DataGrid Control

 
 

 

 
 

 

 
 

  id="MyDataGrid" runat="server"

 
 

  Width="700"

 
 

  BackColor="#ccccff"

 
 

 BorderColor="black"

 
 

  ShowFooter="false"

 
 

 CellPadding=3

 
 

 CellSpacing="0"

 
 

  Font-Name="Verdana"

 
 

  Font-Size="8pt"

 
 

  HeaderStyle-BackColor="#aaaadd"

 
 

  EnableViewState="false"

 
 

  />

 
 

 
 

 
 

多语言支持

多语言支持策略基本上都采取一种类似于查多本字典的模式。先举一个类比例子来说明,比如,我们有英英字典,英汉字典,英德字典,英法字典,对于一个英文单词,每本字典都有对应语言的单词,满足不同语言的用户的需要。我们把要查的英文单词称为key,所有的字典称为资源文件resource file,查出来的对应语言的单词,就是应该显示给用户的内容。、

上述模式简单而常见,不再列出例子代码,下面只进行简单的说明。

.Net框架通过一个重要的资源管理类System.Resources.frameworkSDK.CHS/cpref/html/frlrfsystemresourcesresourcemanagerclasstopic.htm">ResourceManager,来管理在应用程序中使用的不同特定于区域性的资源。调用方可使用 GetObject 和 GetString 两种方法访问特定区域性的资源。这两个方法的参数都包括一个key,和一个本地语言信息。.Net的资源文件后缀是DLL。

Apache Struts项目的类org.apache.struts.util.MessageResources的getMessage方法提供了类似的功能。Apache Struts项目提供了一个扩展的HTML Tag —— Message,也起着多语言支持、本地化的作用。Struts的资源文件后缀是properties,格式按照java properties文件的格式。

Apache Cocoon项目提供了一类称为i18n的Transformer,用来实现多语言支持。常用的标记如和


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993466/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-993466/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值