`

struts2 数据校验总结

阅读更多

struts2的数据校验实在struts2的类型转换之后进行的,给出如下的示例:

 1、编写register2.jsp,让客户输入数据,代码如下:

  

<body>
		<table align="center" width="30%">
			<tr>
				<td style="color:red">
					<s:fielderror></s:fielderror>
				</td>
			</tr>
		</table>

<form action="reg.action" method="post">
			<table align="center" border="1" width="30%">
				<tr>
		             <td>
						username
					</td>
					<td>
						<input type="text" name="username" />
					</td>
				</tr>
				<tr>
					<td>
						password
					</td>
					<td>
						<input type="password" name="password">
					</td>
				</tr>
				<tr>
					<td>
						re-password
					</td>
					<td>
						<input type="password" name="repassword">
					</td>
				</tr>
				<tr>
					<td>
						age
					</td>
					<td>
						<input type="text" name="age">
					</td>
				</tr>
				<tr>
					<td>
						birthday
					</td>
					<td>
						<input type="text" name="birthday">
					</td>
				</tr>
				<tr>
					<td>
						graduation
					</td>
					<td>
						<input type="text" name="graduation">
					</td>
				</tr>
                <tr>
					<td>
					    <input type="submit" value="submit">
					</td>
					<td>
						<input type="reset" value="reset">
					</td>
				</tr>
			</table>
           
            
		</form>
</body>

   可以按照如下的规则进行数据校验

   (1)username不能为空值,并且长度在6--10之间。

   (2)password不能为空值,并且长度在6--10之间。

   (3)repassword不能为空值,并且长度在6--10之间。

   (4)age必须在1--150之间

   (5)birthday不能为空值。

   (6)graduation不能为空值。

   (7)birthday的日期必须早于graduation的日期。

2、配置校验文件,命名为:RegisterAciton-validation.xml。加入如下代码

   

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>username is should not be null!</message>
   </field-validator>
   <field-validator type="stringlength">
   <param name="maxLength">10</param>
   <param name="minLength">6</param>
   <message>username length is incorrect and should be between ${minLength} and ${maxLength}</message>
   </field-validator>
</field>

<field name="password">
<field-validator type="requiredstring">
  <param name="trim">true</param>
  <message>password is should not be null</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>password length is incorrect and should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>

<field name="repassword">
<field-validator type="requiredstring">
  <param name="trim">true</param>
  <message>repassword is should not be null</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>repassword length is incorrect and should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>

<field name="age">
    <field-validator type="int">
    <param name="max">10</param>
    <param name="min">6</param>
    <message>age is incorrect and should be between ${min} and ${max}</message>
    </field-validator>
</field>
 
 <field name="birthday">
   <field-validator type="required">
    <message>birthday is incorrect</message>
   </field-validator>
 </field>

 <field name="graduation">
   <field-validator type="required">
    <message>graduation is incorrect</message>
   </field-validator>
   <field-validator type="date">
   <param name="max">2050-08-12</param>
   <param name="min">2010-09-23</param>
   <message>graduation should after the birthday</message>
   </field-validator>
 </field>
</validators>

 3、编写RegisterAciton类

   

package com.test.action;

import java.util.Calendar;
import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAciton extends ActionSupport{
private String username;
private String password;
private String repassword;
private int age;
private Date birthday;
private Date graduation;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
public String getRepassword() {
	return repassword;
}
public void setRepassword(String repassword) {
	this.repassword = repassword;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public Date getBirthday() {
	return birthday;
}
public void setBirthday(Date birthday) {
	this.birthday = birthday;
}

@Override
public String execute() throws Exception {
	
  return SUCCESS;
}
@Override
public void validate() {
			
}
public Date getGraduation() {
	return graduation;
}
public void setGraduation(Date graduation) {
	this.graduation = graduation;
}
	
	
	
}

 

   4、配置struts.xml文件

     

<action name="reg" class="com.test.action.RegisterAciton">
      <result name="success">/success.jsp</result>
      <result name="input">/register.jsp</result>
  </action>

 

5、编写success.jsp文件

<body>
    username <s:property value="username"/><br>
    password <s:property value="password"/><br>
    re-password <s:property value="repassword"/><br>
    age <s:property value="age"/><br>
    birthday <s:property value="birthday"/><br>
    graduation <s:property value="graduation"/>

</body>

 至此一个数据校验实例配置成功了

6、总结

    (1)数据校验中xml文件的命名必须准确”action的类名-validation.properties“。

    (2)struts2为我们提供了默认的校验,打印出的信息很不友好,所以我们可以对它提供的信息进行修正,有以下两种方法:

   第一种方法:

    在struts.xml中加入

         

<constant name="struts.custom.i18n.resources"value="message"></constant>

    然后新建一个名为message.properties的文件,代码如下

    

xwork.default.invalid.fieldvalue={0} error

  第二种方法:

      定义文件名为“类名.properties”输入的代码如下

     

invalid.fieldvalue.age=\u5e74\u9f84\u8f93\u5165\u4e0d\u6b63\u786e

     意思是:invalid.fieldvalue.age=“年龄信息输入不正确”。

  (3)总共有两种校验方式,addActionError方法和addFieldError方法,可以在jsp文件中进行如下设置,来指定要显示的内容。

  

<table align="center" width="30%">
     <tr>
          <td style="color: red">
                   <s:fielderror cssStyle="color:red" />
         </td>
    </tr>
</table>

 (4)除了服务器端的数据校验我们可以提供客户端的数据校验,客户段数据校验有两种方法

     第一种方法: form的主题(theme)一定不能设置为simple;form的validate属性设为true
                        最好不要使用struts2给我们提供的客户端校验方法。

    第二种方法:编写js代码实现

                        将form的onsubmit的值设为如下的代码

                             

<s:form action="reg" theme="simple" onsubmit="return validate()">

      编写js

       

 <script type="text/javascript">
       function validate()
       {
         var usernamevalue=document.getElementById("usernameId").value;
         var passwordvalue=document.getElementById("passwordId").value;
         var repasswordvalue=document.getElementById("repasswordId").value;
         if(usernamevalue.length==0)
         {
             alert("username should not be blank");
             return false;  
         }
         else if(usernamevalue.length>10||usernamevalue.length<6)
          {
             alert("length of username should be between 6 and 10");
             return false;    
          }       
        if(passwordvalue.length==0)
         {
             alert("password should not be blank");
             return false;  
         }
         else if(passwordvalue.length>10||passwordvalue.length<6)
          {
             alert("length of password should be between 6 and 10");
             return false;    
          }       
           if(repasswordvalue.length==0)
         {
             alert("repassword should not be blank");
             return false;  
         }
         else if(repasswordvalue.length>10||repasswordvalue.length<6)
          {
             alert("length of repassword should be between 6 and 10");
             return false;    
          }  
          
         if(repasswordvalue!=passwordvalue)     
         {
             alert("repasswordis not equals password!");
             return false;    
          }  
         return true;
       }
   
       </script>

 (5)当我们使用xml文件对数据进行校验时,在action类中不要重写validate方法。

(6)我们可以只对具体action类中的某个业务逻辑进行校验,命名方式为“aciton类的名字-方法名-validation.xml”,如果已经定义了"action类的名字-validation.xml",那么struts2会先执行后者在执行前者。所以我们最好不要定义后者

(7)

   

class parentAction
{

   test()
}
  
class childAction extends parentAction
{

test()//重写test
}
parentAction-validtion.xml
parentAction-test-validtion.xml
childAction-validtion.xml
childAction-test-validtion.xml

 对于以上代码,struts2对所有xml文件的访问顺序为从上到下。

 

                         

             

分享到:
评论

相关推荐

    Struts2输入校验总结

    在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...

    struts2输入校验总结

    总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...

    struts2输入校验深入总结

    Struts2的Interceptor(拦截器)允许在Action执行前进行数据校验。例如,`ValidationInterceptor`是一个内置的拦截器,它使用Action级别的注解进行校验。如果校验失败,会将错误信息存入ActionContext,然后跳转到...

    Struts2数据校验与国际化

    总结起来,Struts2的数据校验机制提供了多种方式确保数据质量,而其国际化功能则使得应用能够服务于全球用户。理解并熟练掌握这些机制,对于开发健壮、多语言的Web应用至关重要。在实际项目中,开发者可以根据需求...

    struts2 数据校验

    总结,Struts2的数据校验功能强大且灵活,通过XML配置或注解方式定义验证规则,结合Interceptor和Action,能够在客户端和服务器端有效地进行数据校验,保障应用程序的稳定性和安全性。同时,其丰富的验证规则和动态...

    struts2输入校验

    总结来说,Struts2的输入校验机制提供了灵活且强大的方式来保护应用程序免受非法输入的影响。无论是通过XML配置还是注解,都可以方便地定义和应用校验规则。同时,通过自定义校验器和分组校验,可以满足各种复杂的...

    struts2的数据校验

    总结,Struts2的数据校验机制提供了强大的工具来确保用户输入的有效性,通过注解、XML配置或自定义校验器实现灵活的校验规则。通过正确处理校验错误并利用国际化功能,开发者可以创建出健壮且用户体验良好的Web应用...

    Struts2自定义校验框架

    当数据校验失败时,Struts2会自动将错误信息放入ActionContext,可以通过`ActionContext.getErrorMessages()`获取这些错误信息。在JSP页面中,可以使用Struts2的标签库如`s:fielderror`来显示错误信息。 6. **...

    struts2标签+校验+SSH

    总结来说,Struts2作为一款强大的MVC框架,通过其无侵入式设计、拦截器、类型转换、多样化的视图支持和灵活的数据校验,极大地提升了Java web开发的效率和质量。对于初学者来说,理解和掌握这些核心特性是学习Struts...

    Struts2 输入校验

    Struts2作为一款流行的Java Web框架,其在...总结,Struts2的输入校验机制是保证应用程序健壮性的关键组成部分。开发者可以根据项目的具体需求,灵活选择合适的方法来实施输入校验,以确保数据的准确性和系统的安全性。

    struts2的自定义校验器例子

    总结,这个“struts2的自定义校验器例子”展示了如何在Struts2中为特定需求创建自定义验证逻辑,确保服务器端数据的有效性和安全性。通过实现自定义校验器,开发者可以灵活地控制输入数据的验证规则,提高应用程序的...

    struts2校验框架使用心得.txt

    ### Struts2校验框架使用心得 #### 一、Struts2校验框架概述 Struts2是一款基于Java的企业级Web应用开发框架,它能够帮助开发者构建出结构清晰、易于维护的应用程序。其中,Struts2提供的校验框架是其核心特性之一...

    struts2校验框架

    ### Struts2校验框架详解 ...Struts2校验框架为开发者提供了一套强大而灵活的数据校验机制,通过简单的配置即可实现复杂的数据校验逻辑。熟练掌握其使用方法,不仅能提高Web应用程序的质量,还能极大地提升开发效率。

    struts2总结大全

    Struts2提供了强大的数据校验功能,支持字段级和对象级校验。开发者可以使用注解或XML配置文件定义校验规则,框架会自动执行校验逻辑,并在失败时生成相应的错误消息。校验分为两类:预定义的校验(如非空、长度限制...

    struts2笔记之校验表单信息

    总结来说,Struts2的表单校验机制提供了多种灵活的方式,开发者可以根据实际需求选择适合的校验策略,确保用户输入的数据准确无误,从而提高应用的安全性和稳定性。无论是使用XML配置文件、注解还是自定义校验方法,...

    struts2数据验证与国际化

    总结来说,Struts2的数据验证和国际化功能提高了开发效率,保证了数据的准确性和应用程序的多语言支持。开发者可以通过Action验证或ActionForm验证来处理数据有效性,同时通过资源文件实现内容的国际化。这些特性...

    struts2官方例子7-表单验证 xml形式的验证

    总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...

Global site tag (gtag.js) - Google Analytics