struts2 --- 输入验证Validation

1、输入验证分类
客户端验证:长使用javascript对验证字段进行验证;
服务端验证:使用java代码对验证字段进行后台验证;


2、客户端验证
(1)手动验证
使用javascript脚本进行验证;
============================== javascript =======================
<script type="text/javascript">
function validate()
{
var form = document.forms[0];
var uname = form.username.value;
var upasswd = form.password.value;
if(uname == null || uname == "")
{
alert("用户名称是必填项");
form.username.focus(); //光标定位到此处
return;
}
if(upasswd == null || upasswd == "")
{
alert("用户密码是必填项");
form.password.focus(); //光标定位到此处
return;
}
}
</script>
============================== 表单部分 =======================
<s:form action="">
<s:textfield name="username" label="用户名称"></s:textfield>
<s:password name="password" label="用户密码"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="url" label="个人主页"></s:textfield>
<s:textfield name="birthday" label="生日"></s:textfield>
<s:textfield name="email" label="Email"></s:textfield>

<input name="subimt" type="button" value="注册" οnclick="validate()" />
</s:form>

(2)自动验证
客户端的自动验证只需要在 <s:form action="" validate="true"> 增加validate="true";
(不同浏览器显示的效果不一样,很少使用)
<s:form action="" validate="true">
<s:textfield name="username" label="用户名称"></s:textfield>
<s:password name="password" label="用户密码"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="url" label="个人主页"></s:textfield>
<s:textfield name="birthday" label="生日"></s:textfield>
<s:textfield name="email" label="Email"></s:textfield>

<input name="subimt" type="button" value="注册" οnclick="validate()" />
</s:form>
3、服务器端验证
3.1手动验证
<1>开发者在定义的action中继承了ActionSupport类,那么可以覆盖该类中的validate方法,该方法可以在执行action方法之前进行集中验证;
public class RegisterAction extends ActionSupport
{
public void validate()
{
if(username==null || username.trim().equals(""))
{
String msg = "用户名称是必填项";
this.addFieldError("username", msg);
}
if(password==null || password.trim().equals(""))
{
String msg = "用户密码是必填项";
this.addFieldError("password", msg);
}
}

public String execute()
{
return SUCCESS;
}

private String username;
private String password;
private String url;
private String email;
private Date birthday;
private int age;
( ... get和set方法 ...)
}
<2> 在struts2.xml文件中配置action;
<struts>
<package name="example" namespace="/" extends="struts-default">
<action name="register" class="com.my.action.RegisterAction">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
<3> 在登录页面index.jsp页面:

<s:form action="register.action">
<s:textfield name="username" label="用户名称"></s:textfield>
<s:password name="password" label="用户密码"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="url" label="个人主页"></s:textfield>
<s:textfield name="birthday" label="生日"></s:textfield>
<s:textfield name="email" label="Email"></s:textfield>
<s:subimt value="注册"></s:subimt>
</s:form>
【注意】Action中的addFieldError方法要依赖于struts2的标签,如果不是标签,报错信息将不显示;


3.2 自动验证
要完成自动验证,需要编写自动验证所需要的验证文件:ActionName-validation.xml
validator的jar包的配置查看:xwork-core-2.3.30.jar---->com.opensymphony.xwork2.validator.validators---->default.xml
验证文件RegisterAction-validation.xml的内容:
<validators>
<field name="username">
<field-validator type="requiredstring">
<message>必需要填用户名称</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">2</param>
<param name="maxLength">20</param>
<message>用户名最大长度为20,最小长度为2</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<!-- <message key="requiredstring"/>  -->
<message>必需要填用户密码</message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message>email格式错误!</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">120</param>
<message>年龄最大120,最小1</message>
</field-validator>
</field>
<field name="url">
<field-validator type="url">
<message>URL格式错误!</message>
</field-validator>
</field>
</validators>

3.3 资源文件的加入配置
(1)资源文件ResourceMsg.properties的定义,将资源文件放到src目录下面;
register.username.required=Username is required.
register.password.required=Password is required.
(2)在Struts.xml文件中加入常量
<struts>
<constant name="struts.custom.i18n.resources" value="ResourceMsg"></constant>
<action ...> ... </action>
</struts>
(3)RegisterAction-validation.xml的内容修改
<validators>
<field name="username">
<field-validator type="requiredstring">
<!-- key中配置资源文件中的key名 -->
<message key="register.username.required"/>  
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<!-- key中配置资源文件中的key名 -->
<message key="register.password.required"/>
<!-- <message>必需要填用户密码</message>  -->
</field-validator>
</field>
</validators>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值