Flask接口签名sign原理与实例代码浅析
228
2023-02-06
Struts2学习教程之输入校验示例详解
前言
数据校验几乎是每个应用都要做的工作。用户输入的数据,发送到服务器端,天知道用户输入的数据是否是合法的,是否为恶意输入。所以一个健壮的应用系统必须对用户的输入进行校验,将非法的输入阻止在应用之外,防止这些非法的输入进入系统,从而保证系统的稳定性、安全性。
我们都知道,为了更好的用户体验,以及更高的效率,现在的Web应用都存在以下两重数据校验:
客户端数据校验
服务器端数据校验
对于客户端数据校验主要是通过javascript代码来完成;而对于服务器端数据校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
Struts2框架为了减轻开发人员的工作量,提高工作效率,在数据校验这方面也下了很大功夫,那么Struts2是如何完成数据校验的呢?(由于Struts2框架的客户端校验能力较弱,不予总结,这篇文章主要总结Struts2框架的服务器端数据校验功能)
编写校验规则文件
我们都知道数据校验都是一些繁琐的代码,为了从这些繁琐的代码中抽身出来,Struts2框架提供了基于配置文件的数据校验,只需要编写校验规则文件即可,校验规则文件指定每个表单域应该满足怎样的规则。
下面通过一个Demo示例来说说Struts2框架的输入校验。
前台页面:
用户名:
密码:
年龄:
生日:
后台Action处理代码:
public class LoginAction extends ActionSupport
{
private String name;
private String password;
private int age;
private Date birthday;
private String tip;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setPassword(String password)
{
this.password = password;
}
public String getPassword()
{
return password;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public void setBirthday(Date birthday)
{
this.birthday = birthday;
}
public Date getBirthday()
{
return birthday;
}
public void setTip(String tip)
{
this.tip = tip;
}
public String getTip()
{
return tip;
}
public String execute() throws Exception
{
// 这里简化了操作
return SUCCESS;
}
}
通过上面的Action代码可以看到,我并没有为添加任何的字段校验代码,而我们只需要编写一个校验文件,如下:
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
true
<![CDATA[(\w{4,25})]]>
true
<![CDATA[(\w{4,25})]]>
1
150
1900-01-01
2050-02-21
Struts2的校验文件规则与Struts1的校验文件设计方式不同,Struts2中每个Action都有一个校验文件,因此该校验文件的文件名应该遵守如下规则:
前面的Action名是可以改变的,后面的-validation.xml部分总是固定的,且该校验文件应该被保存在与Action class文件相同的路径下。
与类型转换失败相似的是,当输入校验失败后,Struts2也是自动返回名为"input"的Result,因此需要在struts.xml文件中配置名为"input"的Result。
国际化提示信息
对于校验失败的情况下,就需要给用户提示错误信息,那么现在就出现了个问题,在多语言环境下,如何正确的提示对应语言的提示信息呢?像上面那样直接在校验文件中写死可不行。为了国际化提示信息,为message元素指定key属性,该key属性指定是国际化提示信息对应key。
例如,上述的校验文件,可以大致写成这样:
true
<![CDATA[(\w{4,25})]]>
内建校验器
在上面的校验文件中,可以看到这样的语句:
...
这里的type属性值就是校验器。在Struts2框架内部提供了大量的内建校验器,这些内建的校验器可以满足大部分应用的校验需求,我们只需要使用这些校验器即可。
我们可以使用解压缩工具打开xwork-core-2.3.24.1.jar文件,在xwork-core-2.3.24.1.jar\com\opensymphony\xwork2\validator\validators路径下可以找到一个default.xml文件,这个文件就是Struts2默认的校验器注册文件,内容如下:
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
关于这些校验器的具体使用,这里就不一一举例了。
总结
这篇文章对Struts2框架中的校验器进行了简单的总结,对于这里说的校验器,基础的是如何使用,而最重要的是掌握Struts2校验器这种思想,将写代码来做的事情,通过配置来完成,这种方法很值得我们借鉴,在我们学习其它框架中,我们也会碰到这种方式。学习,痛并快乐着。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~