代码结构:

使用Struts校验框架,保证输入学生的基本信息:学号、姓名、性别、出生年月、专业、总学分等,要求输入满足以下条件:
(1) 学号前两位大于“13”并且后面4位必须为数字;
(2) 出生年月必须保证年龄大于等于18岁;
(3) 专业不能为空;
(4) 总学分在0-80之间。


RegistAction.java
package com.action;
import java.util.*; import com.bean.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class RegistAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception { if(hasErrors()){
return INPUT;
}
return SUCCESS;
}
public void validate(){
Calendar cal = Calendar.getInstance();
String[] str = user.getBir().split("-"); int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH)+1;
int dayNow = cal.get(Calendar.DAY_OF_MONTH); int yearBirth=Integer.parseInt(str[0]);
int monthBirth=Integer.parseInt(str[1]);
int dayBirth=Integer.parseInt(str[2]); int age=yearNow-yearBirth;
if(monthNow<=monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) age--;
if(age < 18){
addFieldError("user.bir", "出生年月必须保证年龄大于等于18岁!");//QAQ
}
} }

RegistAction-validation.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators>
<field name="user.id">
<field-validator type="regex">
<param name="expression"><![CDATA[(^(1[4-9]|[2-9][0-9]\d).*\d{4}$)]]></param>
<message>学号前两位大于“13”并且后面4位必须为数字!</message>
</field-validator> <field-validator type="requiredstring">
<param name="trim">true</param>
<message>学号不能为空!</message>
</field-validator>
</field> <field name="user.major">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>专业不能为空!</message>
</field-validator>
</field> <field name="user.score">
<field-validator type="required">
<message>请输入用户考试成绩</message>
</field-validator>
<field-validator type="int">
<param name="min">0</param>
<param name="max">80</param>
<message>学分必须在0-80之间!</message>
</field-validator>
</field> </validators>
User.java
package com.bean;
import java.util.Date;
import com.bean.*;
public class User {
//学号、姓名、性别、出生年月、专业、总学分等
private String id;
private String username;
private String agender;
private String bir; //生日类/自定义类型转换/将生日的年月取出方便计算年龄
private int age;
private String major;
private int score;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAgender() {
return agender;
}
public void setAgender(String agender) {
this.agender = agender;
}
public String getBir() {
return bir;
}
public void setBir(String bir) {
this.bir = bir;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
} }
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="myform" class="com.action.RegistAction">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %> <html>
<head>
<title>注册页面</title>
<!-- <script type="text/javascript"> -->
<!-- function validateAge(){ -->
<!-- var birthday=$('#user.age').val(); //假设用户输入的是这种格式 birthday="2017-10-11" -->
<!-- var birthday1=birthday.split('-'); -->
<!-- var convert2Date= new Date(birthday1[0],birthday1[1],birthday1[2]);//把字符串转换成日期 -->
<!-- var nowDate=new Date(); //获取当前时间 -->
<!-- //var year=nowDate.getFullYear(); -->
<!-- //var month=nowDate.getMonth()+1; -->
<!-- //var date=nowDate.getDate(); -->
<!-- //var nowDate=new Date(year,month,date); -->
<!-- var age=nowDate.getTime()-convert2Date.getTime(); //毫秒 -->
<!-- age=age/(24*3600*1000); //天数 至于转换成多少年(岁),详细的还要根据是否闰年计算 age/(24*3600*1000*366) 或者 age/(24*3600*1000*365) -->
<!-- } -->
<!-- </script> -->
</head>
<body>
<s:form action="myform" method="post">
<s:textfield name="user.id" label="学号"></s:textfield>
<s:textfield name="user.username" label="姓名"></s:textfield>
<s:radio name="user.agender" list="#{1:'男',0:'女'}" label="性别" value="1"></s:radio>
<s:textfield name="user.bir" label="生日" placeholder="xxxx-xx-xx"></s:textfield>
<!-- <s:hidden name="user.age" label="年龄"></s:hidden> -->
<s:textfield name="user.major" label="专业"></s:textfield>
<s:textfield name="user.score" label="总学分"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>成功页面</title>
</head> <body>
恭喜<s:property value="user.username"/>!您已经注册成功!
</body>
</html>

Structs2 校验框架的更多相关文章

  1. (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)

    转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml)   根据输入 ...

  2. struts2:数据校验,通过XWork校验框架实现(validation.xml)

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...

  3. Java对象校验框架之Oval

      只要有接口,就会有参数的校验,目前开源的校验框架已经非常多了,不过不得不提一下Oval.OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJO ...

  4. Struts2中的校验框架

    Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...

  5. 高效使用hibernate-validator校验框架

    一.前言 高效.合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑.接下来会介绍一下常用一些使用方式. 二.常用注解说明 限制 说明 @Null 限 ...

  6. 类Shiro权限校验框架的设计和实现(2)--对复杂权限表达式的支持

    前言: 我看了下shiro好像默认不支持复杂表达式的权限校验, 它需要开发者自己去做些功能扩展的工作. 针对这个问题, 同时也会为了弥补上一篇文章提到的支持复杂表示需求, 特地尝试写一下解决方法. 本 ...

  7. Dubbo的Filter实战--整合Oval校验框架

    前言: 其实很早之前就想写一篇关于oval和具体服务相整合的常见做法, 并以此作为一篇笔记. 趁现在项目中间空闲期, 刚好对dubbo的filter有一些了解. 因此想结合两者, 写一下既结合校验框架 ...

  8. SpringMVC中的 JSR 303 数据校验框架说明

    JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则 ...

  9. Struts2 校验框架学习笔记

    Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...

随机推荐

  1. Chromedriver 的安装与配置

    首先是下载网址:https://sites.google.com/a/chromium.org/chromedriver/downloads(需要FQ,用Browser浏览器即可翻进,版本要和Chro ...

  2. JavaMail实现邮件的发送

    1,拷贝mail.jar 和activation.jar到项目中 2,开启邮箱的 POP3/SMTP服务,以QQ邮箱为例 进去QQ邮箱-->设置-->账号-->进行设置如下图 注意: ...

  3. ASP.NET和ASP的区别是什么

    分析: ASP与ASP.NET是Microsoft公司在Web应用程序开发上的两项重要技术. ASP与ASP.NET区别如下: (1)开发语言不同:ASP的开发语言仅局限于使用non-type脚本语言 ...

  4. CentOS 5.8 安装python 和 yum

    centos 5.8  资源路径: http://vault.centos.org/5.8/os/x86_64/CentOS/ rpm -Uvh http://vault.centos.org/5.8 ...

  5. C++ Vector 中自定义对象的排序

    需求: 客户端收到游戏中的所有联盟列表,现在需要按联盟的属性比如lv来进行排序. 数据存储: 每个联盟数据是一个对象,所有的联盟列表存在一个vector容器里面. 老的解决方法: 冒泡排序方法算法 新 ...

  6. Codeforces Round #484 (Div. 2)

    题目链接:http://codeforces.com/contest/982 A. Row time limit per test:1 second memory limit per test:256 ...

  7. auto-keras 测试保存导入模型

    # coding:utf-8 import time import matplotlib.pyplot as plt from autokeras import ImageClassifier# 保存 ...

  8. MySQL当中的case when then

    其实就相当于if else:而且也可以用if来替代. case whent 条件1 then 条件2 else 条件3 end; 如果条件1成立就执行条件2否则执行条件3 mysql ) end; + ...

  9. 使用makecontext实现用户线程【转】

    转自:http://blog.csdn.net/cyberlabs/article/details/6920138 使用makecontext实现用户线程 现代Unix系统都在ucontext.h中提 ...

  10. otg device id pin 探討

    Platform : Qualcomm MSM8937 PMIC : Qualcomm PMI8940 OTG base on USB2.0,增加 device 可當 host 也可當 periphe ...