NET移植案例学习:建造Web站点(4)
程序员文章站
2022-03-26 09:22:14
lame报告和验证控件
在移植过程中,开发组决定修改数据输入页以充分发挥asp .net检验控件的优势,并降低现存代码的复杂度。当用户想提交一个lame报告时,他们在点击错误对话框(帮助文档的...
lame报告和验证控件
在移植过程中,开发组决定修改数据输入页以充分发挥asp .net检验控件的优势,并降低现存代码的复杂度。当用户想提交一个lame报告时,他们在点击错误对话框(帮助文档的反馈链接)上的lame按钮,或者是工具栏上的feedback按钮之后,在visual studio .net ide中会见到一个页面。为了将检验控件整合到lame输入页,有必要重写这些页,并充分利用asp .net web form技术。
web form检验控件提供了一套独立于的校验函数,而不需要你在客户应用程序中用脚本语言写代码。这个控件可以在低版本的浏览器中使用(包括microsoft internet explorer 4.0以前的版本和netscape 5.0以前的版本),但需要利用服务器来检查控件的值并返回结果。当发现高版本的浏览器(interne explorer 4.0及其以后的版本和netscape 5.0及其以后的版本)时,验证的主要步骤是在向服务器发送数据之前,在客户端完成的。在使用该版本浏览器时,如果被提交到服务器页面企图欺骗或绕过验证规则,服务器端的验证仍将进行。
figure 5.
原来的lame入口页中的验证逻辑的目标很简单:要求用户在提交表单之前已经在某些字段上填了值。尽管目标很简单,但它需要类似于图5中的jscript代码的客户端脚本代码。
除了需要在客户端用脚本语言进行验证,还要在服务器上增加验证逻辑,以防止用户绕过客户端的验证并提交无效数据。使用了asp .net验证控件后,可以用required,compare和 regularexpressionvalidator等控件替换这些验证逻辑。这样不仅可以从页面中删掉很多jscript代码,而且可以利用regularexpressionvalidator控件来加强验证。但当发现了高版本的浏览器时,仍将向客户端发送jscript代码,这样就可以在提交到服务器进行验证前进行客户端验证,。不同处在于开发组不需要编写jscript代码,验证控件会自动生成合适的代码。
当提交报告或一般的lame报告时,需要同时提交所使用产品的版本。在大多数情况下,用户可以从下拉列表中选出版本号,而唯一的验证就是检查用户是否选择了一个版本号(参见图6)。但在某些情况下,比如未列出所用的版本时,用户需要手动输入版本号。在这种情况下,可以用两种格式来输入版本号,在提交到服务器前将检查格式是否正确。用来完成这种验证的jscript代码可能很复杂,但如果使用regularexpressionvalidator控件,只要定义正确的表达规则就可以进行验证了。下面这段代码使用了regularexpressionvalidator控件,并设置了可以完成这种检查的属性。
<:regularexpressionvalidator id=txtbuildvaluevalidator
runat="server" display="dynamic" controltovalidate="txtbuild"
errormessage="also, please enter the build version in
the following format: nn.nn.nn.nnnn "
validationexpression="d{2}.d{2}.d{2}.d{4}|d{4}">##
</asp:regularexpressionvalidator>
用于报告漏洞的web service
这次移植还要增加报告漏洞的输入容量,并用web service来实现漏洞报告。为了有效的发布有关visual studio .net和.net框架的信息,microsoft建立了许多包含了例子和信息的web站点。这些站点需要一种机制,允许用户通过其它的web站点报告漏洞,并将这些信息贮存在库中。站点还要求能实现离线报告漏洞,这样用户可以一次将许多漏洞发送到站点。要想实现这些目标,我们应该使用web service来完成报告漏洞的任务。
为了便于分类管理漏洞报告,而且能让合适的开发组看到报告,在一份漏洞报告中还需要提交许多其它数据(比如操作、语言、产品、地区等)。为了能让客户端应用程序提供丰富、有用的接口,有必要向客户端应用程序提供这些信息。为了能适用于更多的程序,开发组决定使用xml来传输数据。
为了简化报告漏洞服务的使用,开发组开发了多种接口,并实现了用多种方法保存报告。一个接口要求用户提供与漏洞报告数据有关的id值,另一个接口允许客户端应用程序用字符串提交其它数据。如果采用后一种方式,漏洞报告服务将把字符串转变为相关的id,并通过漏洞报告完成验证并保存。
原来的用visual basic 6.0开发的漏洞报告组件使用ado与客户端程序进行数据交换。为了实现用xml传输数据,我们可以使用ado记录的adpersistxml格式将记录中的数据转变为xml文档。最后还要将得到的xml漏洞报告转变为ado记录,以便用visual basic 6.0的组件进行处理。
开发小组决定在visual basic .net中重新编写报漏洞的类,这样可以充分利用ado.net中基于xml的dataset。这样做使得他们一方面可以方便地将数据以xml的形式提供给客户端的应用程序,同时,还可以使用visual basic .net组件中简单易用的对象接口与数据进行交互。
一般说来,编写转换数据格式的代码是一种更为安全的选择。但考虑到我们迁移工程的主要目的是为了体验一下新的技术,采取这样的转换方法还是有一定的实际意义的。
在移植过程中,开发组决定修改数据输入页以充分发挥asp .net检验控件的优势,并降低现存代码的复杂度。当用户想提交一个lame报告时,他们在点击错误对话框(帮助文档的反馈链接)上的lame按钮,或者是工具栏上的feedback按钮之后,在visual studio .net ide中会见到一个页面。为了将检验控件整合到lame输入页,有必要重写这些页,并充分利用asp .net web form技术。
web form检验控件提供了一套独立于的校验函数,而不需要你在客户应用程序中用脚本语言写代码。这个控件可以在低版本的浏览器中使用(包括microsoft internet explorer 4.0以前的版本和netscape 5.0以前的版本),但需要利用服务器来检查控件的值并返回结果。当发现高版本的浏览器(interne explorer 4.0及其以后的版本和netscape 5.0及其以后的版本)时,验证的主要步骤是在向服务器发送数据之前,在客户端完成的。在使用该版本浏览器时,如果被提交到服务器页面企图欺骗或绕过验证规则,服务器端的验证仍将进行。
figure 5.
原来的lame入口页中的验证逻辑的目标很简单:要求用户在提交表单之前已经在某些字段上填了值。尽管目标很简单,但它需要类似于图5中的jscript代码的客户端脚本代码。
除了需要在客户端用脚本语言进行验证,还要在服务器上增加验证逻辑,以防止用户绕过客户端的验证并提交无效数据。使用了asp .net验证控件后,可以用required,compare和 regularexpressionvalidator等控件替换这些验证逻辑。这样不仅可以从页面中删掉很多jscript代码,而且可以利用regularexpressionvalidator控件来加强验证。但当发现了高版本的浏览器时,仍将向客户端发送jscript代码,这样就可以在提交到服务器进行验证前进行客户端验证,。不同处在于开发组不需要编写jscript代码,验证控件会自动生成合适的代码。
当提交报告或一般的lame报告时,需要同时提交所使用产品的版本。在大多数情况下,用户可以从下拉列表中选出版本号,而唯一的验证就是检查用户是否选择了一个版本号(参见图6)。但在某些情况下,比如未列出所用的版本时,用户需要手动输入版本号。在这种情况下,可以用两种格式来输入版本号,在提交到服务器前将检查格式是否正确。用来完成这种验证的jscript代码可能很复杂,但如果使用regularexpressionvalidator控件,只要定义正确的表达规则就可以进行验证了。下面这段代码使用了regularexpressionvalidator控件,并设置了可以完成这种检查的属性。
<:regularexpressionvalidator id=txtbuildvaluevalidator
runat="server" display="dynamic" controltovalidate="txtbuild"
errormessage="also, please enter the build version in
the following format: nn.nn.nn.nnnn "
validationexpression="d{2}.d{2}.d{2}.d{4}|d{4}">##
</asp:regularexpressionvalidator>
用于报告漏洞的web service
这次移植还要增加报告漏洞的输入容量,并用web service来实现漏洞报告。为了有效的发布有关visual studio .net和.net框架的信息,microsoft建立了许多包含了例子和信息的web站点。这些站点需要一种机制,允许用户通过其它的web站点报告漏洞,并将这些信息贮存在库中。站点还要求能实现离线报告漏洞,这样用户可以一次将许多漏洞发送到站点。要想实现这些目标,我们应该使用web service来完成报告漏洞的任务。
为了便于分类管理漏洞报告,而且能让合适的开发组看到报告,在一份漏洞报告中还需要提交许多其它数据(比如操作、语言、产品、地区等)。为了能让客户端应用程序提供丰富、有用的接口,有必要向客户端应用程序提供这些信息。为了能适用于更多的程序,开发组决定使用xml来传输数据。
为了简化报告漏洞服务的使用,开发组开发了多种接口,并实现了用多种方法保存报告。一个接口要求用户提供与漏洞报告数据有关的id值,另一个接口允许客户端应用程序用字符串提交其它数据。如果采用后一种方式,漏洞报告服务将把字符串转变为相关的id,并通过漏洞报告完成验证并保存。
原来的用visual basic 6.0开发的漏洞报告组件使用ado与客户端程序进行数据交换。为了实现用xml传输数据,我们可以使用ado记录的adpersistxml格式将记录中的数据转变为xml文档。最后还要将得到的xml漏洞报告转变为ado记录,以便用visual basic 6.0的组件进行处理。
开发小组决定在visual basic .net中重新编写报漏洞的类,这样可以充分利用ado.net中基于xml的dataset。这样做使得他们一方面可以方便地将数据以xml的形式提供给客户端的应用程序,同时,还可以使用visual basic .net组件中简单易用的对象接口与数据进行交互。
一般说来,编写转换数据格式的代码是一种更为安全的选择。但考虑到我们迁移工程的主要目的是为了体验一下新的技术,采取这样的转换方法还是有一定的实际意义的。
上一篇: ASP 3.0高级编程(二)
下一篇: 在ASP中使用类,实现模块化