Structs2 校验框架
代码结构:

使用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 校验框架的更多相关文章
- (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)
转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml) 根据输入 ...
- struts2:数据校验,通过XWork校验框架实现(validation.xml)
根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...
- Java对象校验框架之Oval
只要有接口,就会有参数的校验,目前开源的校验框架已经非常多了,不过不得不提一下Oval.OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJO ...
- Struts2中的校验框架
Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...
- 高效使用hibernate-validator校验框架
一.前言 高效.合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑.接下来会介绍一下常用一些使用方式. 二.常用注解说明 限制 说明 @Null 限 ...
- 类Shiro权限校验框架的设计和实现(2)--对复杂权限表达式的支持
前言: 我看了下shiro好像默认不支持复杂表达式的权限校验, 它需要开发者自己去做些功能扩展的工作. 针对这个问题, 同时也会为了弥补上一篇文章提到的支持复杂表示需求, 特地尝试写一下解决方法. 本 ...
- Dubbo的Filter实战--整合Oval校验框架
前言: 其实很早之前就想写一篇关于oval和具体服务相整合的常见做法, 并以此作为一篇笔记. 趁现在项目中间空闲期, 刚好对dubbo的filter有一些了解. 因此想结合两者, 写一下既结合校验框架 ...
- SpringMVC中的 JSR 303 数据校验框架说明
JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则 ...
- Struts2 校验框架学习笔记
Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...
随机推荐
- Http字段含义
转载自:http://blog.csdn.net/sand_ant/article/details/10503579 一.request请求Header简介 Accept:--客户机支持的类型 Acc ...
- html实现圆角矩形
问题:如何通过div+css以及定位来实现圆角矩形? 解决方法概述: 内容:首先在<body>标签内部里添加一个大层(大层用来固定整体大框架),然后大层内包含四个小层(四个小层里分别放四个 ...
- redis初试Not all 16384 slots are covered by nodes
按照这里的步骤玩redis集群,http://www.redis.cn/topics/cluster-tutorial.html ./src/redis-trib.rb create --replic ...
- 文件字节大小显示成M,G和K
//字节大小,K,M,G public static final long KB = 1024; public static final long MB = KB * 1024; public sta ...
- java 7修改文件权限
Full control over file attributes is available in Java 7, as part of the "new" New IO faci ...
- 【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP
题目链接: http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/F ...
- 省队集训 Day3 吴清华
[题目大意] 给网格图,共有$n * n$个关键节点,横向.纵向距离均为$d$,那么网格总长度和宽度均为$(n+1) * d + 1$,最外围一圈除了四角是终止节点.要求每个关键节点都要通过线连向终止 ...
- Spring boot集成RabbitMQ(山东数漫江湖)
RabbitMQ简介 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出 ...
- Elements in iteration expect to have 'v-bind:key' directives.
code->首选项->设置->在搜索框中输入:vetur.validation.template->你懂的
- OC 06 Block、数组高级
主要内容: ⼀.Block语法 ⼆.Block使⽤ 三.Block实现数组排序 Block简介 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C⾥面没有Block,C语⾔言的后期扩展版本 ...