struts注册信息验证的实现描述附带代码

来源:互联网 发布:多系统引导软件 编辑:程序博客网 时间:2024/04/30 11:08
 

struts注册信息验证的实现描述附带代码

 

今天我们主要是简单的学习了一些struts2的校验,在课堂上根据老师带领写的一个登录功能的校验的实现,自己写了一个注册功能的校验。使用了正则表达式来完成相应的校验。

 

首先我们先来看一下程序显示的效果,如下图所示:

点击注册按钮后,这几项都不符合我们自定的规则,所以会出现下面的结果~

 

下面我们来看以下代码分析:

首先我用重写validateXxx()方法来完成的。

ValidateXxx()方法中,其中xxx是Action对应的处理逻辑方法。

下面是对Action增加reg,并增加validateReg()方法。代码如下

 

import java.util.Calendar;

import java.util.Date;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionSupport;

 

public class RegAction extends ActionSupport{

   

    private String uname;

    private String upass;

    private Integer uage;

    private Date ubirth;

    public String getUname() {

       return uname;

    }

    public void setUname(String uname) {

       this.uname = uname;

    }

    public String getUpass() {

       return upass;

    }

    public void setUpass(String upass) {

       this.upass = upass;

    }

    public Integer getUage() {

       return uage;

    }

    public void setUage(Integer uage) {

       this.uage = uage;

    }

    public Date getUbirth() {

       return ubirth;

    }

    public void setUbirth(Date ubirth) {

       this.ubirth = ubirth;

    }

    //重写validateReg方法,该方法仅校验Reg处理逻辑

   

    public void validateReg() {

       //判断

       //如果用户名不为空,且不匹配长度为4~25的字母和数字组成的字符串

       System.out.println(uname);

       if(uname==null || !uname.trim().matches("[a-zA-Z0-9]{4,25}")){

           System.out.println(uname);

           addFieldError("uname","您输入的用户名必须是由字母和数字组成,并且长度必须是4~25之间!");

       }

       //如果密码不为空,切长度不匹配4~25的字母和数字组成的字符串

       if(upass==null ||!Pattern.matches("\\w(4,25)",upass.trim())){

           addFieldError("upass","您输入的密码必须是字母和数字,切长度在4~25之间!");

       }

       //如果年龄不在有效的年龄段内

       if(uage>150 || uage<0){

           addFieldError("uage","您输入的年龄不符合正常规则!");

       }

      

       if(uage>150 || uage<0){

           Calendar end = Calendar.getInstance();

           end.set(2050,2,21);

           Calendar start = Calendar.getInstance();

           start.set(1900,1,1);

           //如果生日不为空,且生日不是一个有效的生日

           if(ubirth==null || !(ubirth.after(end.getTime()) || ubirth.before(start.getTime()))){

             

              addFieldError("ubirth","您输入的生日必须是在一个有效的时间段内!");

           }

       }  

    }

    @Override

    public void validate() {

       System.out.println("对action中所有的方法进行检验");

    }

    public String reg() throws Exception {

       System.out.println("进行业务操作处理............");

       return SUCCESS;

    }

}

下面是针对Action写的一个配置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="test" extends="struts-default" namespace="/csdn">

       <action name="reg" class="cn.csdn.hr.reg.action.RegAction" method="reg">

           <result name="input">../error.jsp</result>

           <result>../sc.jsp</result>

       </action>

    </package>

</struts>

 

以上都很基础的实现。

 

最后我们要写一个注册的页面。来接收和显示信息,并通过form表单将信息传递给action处理。从而达到校验用户注册信息的功能。

Jsp代码如下:

<div>

        <h1>用户注册页面</h1>

        <div>

        <form action="${pageContext.request.contextPath}/csdn/reg.action" method="post">

            用户名:<input type="text" name="uname"><br/>

            密码:<input type="text" name="upass"><br/>

            年龄:<input type="text" name="uage"><br/>

            出生日期:<input type="text" name="ubirth"/><br/>

            <input type="submit" value="注册"/>

        </form>

        </div>

 </div>

 

 

 

原创粉丝点击