APP下载

基于Struts2框架数据校验的分析与应用

2011-07-05齐新力郭亚莎邹振宇

仪器仪表用户 2011年5期
关键词:服务器端表单电话号码

齐新力,郭亚莎,邹振宇

(成都理工大学信息科学与技术学院,成都610059)

0 引言

随着社会的发展,计算机技术几乎进入了生活的每个领域,电子商务、电子货币和网上测试等网络业务的兴起,用户数据信息的合法性校验变得越来越重要。对于一个Web应用,所有的用户数据都是通过浏览器收集的[1],如果用户操作不熟练,输入出错,硬件设备不正常,网络传输的不稳定,甚至恶意用户的蓄意破坏等等,这都有可能造成输入异常,轻则导致系统非正常中断,重则导致系统崩溃。所以我们要在提交用户输入的数据前,对数据进行过滤,将异常输入过滤掉。对异常输入的过滤,称为数据校验[2]。

1 Struts2框架数据校验的一般流程

Struts2是一个服务器Java Web开发框架,它采用MVC(模型—视图—控制器)模式[3]。它的数据校验流程[4]如图1所示。

2 客户端校验

客户端校验是比较简单和初级的校验方式,通过在JSP等视图文件中,嵌入JavaScript代码来完成输入数据的过滤。其中JavaScript[5]是一个功能强大的网页脚,我们可以在其中定义校验函数,代码中的过滤条件大多采用正则表达式来作判断。在JavaScript中定义了校验函数后,只需将该校验函数绑定到表单的onSubmit属性即可运行。客户端校验是在用户输入数据提交到后台服务器之前进行的,主要防止由于用户的误操作带来的异常。

3 服务器端校验

只有客户端校验防止异常发生是不够的,有些恶意的用户可以轻易地越过客户端校验,直接向该Action的URL提交数据,这样就会产生很大的安全风险,所以服务器端的校验是很必要的。服务器端校验主要有两种方式:一种是手动完成输入校验[6],即重写validate()和validateXxx()方法,但这种方法要手动编写大量的代码,并且代码复用性不高。这里我们不作讨论。另一种是编写校验规则文件[7],即为Action指定一个XML配置文件用于校验,该文件指定了Action属性必须满足怎样的规则。除了校验规则文件的代码格式外,文件名和文件路径也很重要,其中文件名应遵守一下规则:<Action名字>-validation.xml,并且该文件应该保存在与Action Class文件相同的路径下。

4 实例

下面我们利用一个简单实例向大家展示数据校验,这是一个向简历系统中增加人员信息,要求人员姓名和电话号码不能为空,电话号码必须为4-25位数字。

首先,客户端校验,在addperson.jsp文件中嵌入一段JavaScript代码,该代码为:

<script language=”JavaScript”>

function trim(s){

return s.replace(/^s*/,””).replace(/^s* $/,””);

}

function validate(){

var errStr=””;//保存错误信息

var form=document.getElementById(“myform”);

var name=trim(form.Name.value);

var telephone=trim(form.Telephone.value);

if(name==””||name==null){

errStr+=”姓名必须输入”;

}

if(telephone==””||telephone==null){

errStr+=” 电话号码必须输入”;

}

elseif(!/^w(4,25)$/.test(telephone)){

errStr+=” 电话号码必须是数字,且长度为4到25之间”;

}

if(errStr==””){

return true;

}

else{

alert(errStr);//输出错误信息

return false;

}

</script>

还要在表单标签中调用这个函数:

<form id=”myform”name=”form”onSubmit=”return validate(this);”>

当我们提交表单时,如果没有输入姓名和电话号码,表单将不会提交成功,并弹出如图2对话框:

图2 客户端校验弹出框图

其次,服务器端校验,我们要在相应Action同一目录下,建立一个文件名为addperson-validation.xml,主要代码如下:

<validators>

<field name=”res.name”>

<field-validator type=”requiredstring”short-circuit=”ture”>

<message>请输入姓名! </message>

<field-validator>

</field>

<field name=”res.telephone”>

<field-validator type=”requiredstring”short-circuit=”ture”>

<message>请输入电话号码! </message>

</field-validator>

<field-validator type=”stringlength”short-circuit=”ture”>

<param name=”minlength”>4</param>

<param name=”maxlength”>25</param>

<param name=”trim”>true</param>

<message>电话号码必须介于4到25个字符之间! </message>

</field-validator>

</field>

</validators>

并且还要在Struts2的配置文件中,指定如果输入被拦截,应跳转的页面即可。如果用户跳过客户端校验,没有输入姓名和电话号码的话,将会出现如图3的页面,表单提交不成功。

图3 服务器端校验页面图

以上就是一个完整的校验过程,它可以有效的防止由于用户输入不规范产生的异常情况。

5 结束语

基于Struts2框架的数据校验是很强大的数据校验,它提供了很多常用的校验规则,采用这种校验方式,程序员可以基本上不需要为校验编写太多的代码,并且好扩展。这种方式不仅可以在Struts2的项目开发中应用,它的这种模式思想还可以移植到一般的Java和XML相结合的Web应用开发中,甚至于基于J2EE的大型系统的应用开发中。

[1]彭剑.WEB信息系统中的数据校验问题[J].重庆工商大学学报(自然科学版),2005,22(3):277-280.

[2]TED H.struts in action[M].USA.Manning Publications Co.2002:139-142.

[3]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,28(6):274-281.

[4]李刚.Struts2权威指南[M].北京:电子工业出版社,2007:242-265.

[5]刘聪.零基础学Java Web开发[M].北京:机械工业出版社,2007:28-34.

[6]刘京华,武冬,郅晓娜,等.Java Web整合开发王者归来[M].北京:清华大学出版社,2010:477-478.

[7]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004:229-250.

猜你喜欢

服务器端表单电话号码
移动App表单组件体验设计
Linux环境下基于Socket的数据传输软件设计
浅谈网页制作中表单的教学
不能忘记的电话号码
基于Qt的安全即时通讯软件服务器端设计
使用智能表单提高工作效率
基于Qt的网络聊天软件服务器端设计
打电话
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
表单化管理国内对比研究