struts2详解---->输入校验
在struts2中,我们可以显示对action的所有方法进行校验或者对action的制定方法进行校验。
对于输入校验struts2提供了两种实现方法:
1、采用手工编写代码实现。
2、基于XML配置方式实现。
使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport ,并且提供校验文件 ,校验文件和action类放在同一个包下 ,文件的取名格式 为:ActionClassName-
validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法。 如果 Action类为cn.csdn.action.UserAction,那么该文件的取名就为:UserAction-
validation.xml.
<field> 制定action中要校验的属性,<field-validator> 制定校验器,上面制定的校验器
requiredstring是由系统提供的,系统提供了能满足大部分验证需求的校验器,这些校验器的 定义可以在xwork-2.x.jar中的com.opensmphony.xwork2.validator.validators下的
default.xml中找到。<message> 为校验失败后的提示信息,如果需要国际化,可以为message制定key属性,key的值为资源文件中的key.
在这个校验文件中,对action中字符窜类型的username属性进行验证,首先要求调用trim()方法去掉空格,然后判断用户是否为空。
下面做一个简单的案例:
UserAction.java
package cn.csdn.struts2.action; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { /** * @author z_xiaofei168 */ private static final long serialVersionUID = 1L; private String name; private String pass; private String cpass; private String email; private int age; private String phone; //以下省略所有属性的set和get方法 }
UserAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <!-- 字段校验器:先指定校验的属性:我来校验谁,由谁来校验! --> <field name="name"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="maxLength">12</param> <param name="minLength">6</param> <param name="trim">true</param> <message>用户名长度必须是6~12</message> </field-validator> </field> <field name="pass"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户密码不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="maxLength">16</param> <param name="minLength">6</param> <param name="trim">true</param> <message>用户密码长度必须是6~16</message> </field-validator> </field> <field name="email"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户邮箱不能为空</message> </field-validator> <field-validator type="email"> <message>用户邮箱不合法</message> </field-validator> </field> <field name="age"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户年龄不能为空</message> </field-validator> <field-validator type="int"> <param name="max">120</param> <param name="min">1</param> <message>用户年龄必须位于1-120之间</message> </field-validator> </field> <field name="phone"> <!-- 正则表达式 --> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确!</message> </field-validator> </field> </validators>
struts2.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <package name="csdn" extends="struts-default" namespace="/csdn"> <global-results> <result name="input">/index.jsp</result> </global-results> <action name="register" class="cn.csdn.struts2.action.UserAction" method="reg"> <result name="success">/sc.jsp</result> </action> </package> </struts>
index.jsp
<body> <div align="center"> <h1>用户注册</h1> <div> <!-- 显示用户验证错误信息的输出呢 --> <s:fielderror></s:fielderror> </div> <div> <form action="csdn/register.action" method="post"> <table border="2px"> <tbody> <tr><td>用户名</td><td><input type="text" name="name"/></td></tr> <tr><td>密码</td><td><input type="password" name="pass"/></td></tr> <tr><td>确认密码</td><td><input type="password" name="cpass"/></td></tr> <tr><td>邮箱</td><td><input type="text" name="email"/></td></tr> <tr><td>年龄</td><td><input type="text" name="age" value="1"/></td></tr> <tr><td>电话</td><td><input type="text" name="phone"/></td></tr> <tr><td></td><td><input type="submit" value="注册"/></td></tr> </tbody> </table> </form> </div> </div> </body>