struts2详解---->输入校验

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>
 

猜你喜欢

转载自z-xiaofei168.iteye.com/blog/1028024