【Struts】--Struts2校验框架

    在程序运行中,为保证安全正确运行,我们需要对数据进行一些校验,包括在服务端和客户端进行验证。在Struts2中提供了一种校验框架,可以进行简单有效的基本校验。校验框架分为两种:字段优先和校验器优先校验器。

    首先进行基本的配置和页面设置:

    jsp页面:register.jsp注册    

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
    <!-- 接收错误提示 -->
	<s:fielderror></s:fielderror>
	<!-- form表单提交数据 -->  
	<s:form action="register.action"  theme="simple">
 		 用户名:<s:textfield name="username" label="username"></s:textfield><br>
  		密码:<s:password label="password" name="password"></s:password><br>
  		确认密码:<s:password label="password" name="repassword"></s:password><br>
  		年龄:<s:textfield label="age" name="age"></s:textfield><br>
  		出生日期:<s:textfield label="birthday" name="birthday"></s:textfield><br>
  		<s:submit value="提交"></s:submit>
 	 </s:form>
</body>
</html>


    注册的Java Action类:RegisterAction.java     

<span style="font-size:18px;">package Struts2;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {
  private String username;
  private String password;
  private String repassword;
  private int age;
  private Date birthday;
  
  @Override
	public String execute() throws Exception {
	  return SUCCESS;
	}
  
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;
} 
  
}
</span>

    Struts配置:Struts.xml   

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
<struts>
  <package name="struts2"  extends="struts-default">
    <action name="register" class="Struts2.RegisterAction">
    <!-- 注册成功转向成功页面 -->
      <result name="success">/registerSuccess.jsp</result>
      <!-- 注册失败则回到注册页面 -->
      <result name="input">/register.jsp</result>
    </action>
  </package>
</struts>



    完成上述配置和基本的页面设置之后,还需要建立我们的校验器文件,实质上就是xml文件。命名规则是:校验的Action+“-”+validation.xml,如本次的命名为:RegisterAction-validation.xml,文件与Action放在同一目录下

    字段优先校验器:      

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" 
  "http://struts.apache.org/xwork/xwork-validator-1.0.2.dtd">

<validators>
  <!-- 字段优先校验器 -->
  <!-- 对username进行校验,此处的username对应属性驱动中的get和set对应的名 -->
  <field name="username">
     <!-- 校验username是否为空 -->
     <field-validator type="requiredstring">
       <message>用户名不能为空</message>
     </field-validator> 
     <!-- 校验username长度范围 -->
     <field-validator type="stringlength">
         <param name="maxLength">6</param>
         <param name="minLength">4</param>
         <message>用户名长度在4-6之间</message>
     </field-validator>    
  </field>
  
</validators>
    

    到此,配置完毕(web.xml的配置就不再叙述)。运行的效果如下:

               

     校验器优先:仍然是在RegisterAction-validation.xml中进行配置     

<!-- 校验器优先校验器 -->
  <validator type="requiredstring">
    <param name="fieldName">username</param>
    <message>用户名不能为空</message>
  </validator>
  <validator type="stringlength">
		<param name="fieldName">username</param>
		<param name="minLength">4</param>
		<param name="maxLength">6</param>
		<message>用户名长度在4-6之间</message>
  </validator>
    

    其效果跟字段优先校验一样,当然字段优先校验器与校验器校验两种方式还可以混合使用。


    通过对校验器的学习,让自己对Struts2框架的认识逐渐加深。同时对框架也有了进一步的认识,其实所谓的框架就是把我们常用的一些功能封装起来,在使用的时候能够实现简单灵活,并且能够实现可配置,可复用等。

       

原文地址:https://www.cnblogs.com/victor-grace/p/7253663.html