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中,而且配置起来更为简单方便,功能也更 ...
随机推荐
- [LA3523/uva10195]圆桌骑士 tarjan点双连通分量+奇环定理+二分图判定
1.一个环上的各点必定在同一个点双连通分量内: 2.如果一个点双连通分量是二分图,就不可能有奇环: 最基本的二分图中的一个环: #include<cstdio> #include<c ...
- 【BZOJ】1754: [Usaco2005 qua]Bull Math
[算法]高精度乘法 #include<cstdio> #include<algorithm> #include<cstring> using namespace s ...
- 实现拷贝函数(strcpy)
#include <stdio.h> #include <stdlib.h> // 函数声明 char *mystrcpy(char *object, char *source ...
- 使用SQL Server连接xml接口,读取并解析数据
--数据源格式,放到任意程序中部署接口即可--<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmln ...
- C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
新建一个Console应用程序,项目名称为“FileSystemWatcher”,Copy代码进,编译后就可以用了.代码如下: using System; using System.Collectio ...
- hdfs基本思想
1.hdfs的优缺点 (1)不适合大量小文件存储: (2)不适合并发写入,不支持文件随机修改:(只能append追加) (3)不支持随机读等低延时的访问方式 2.基本思想 主从结构 主节点, name ...
- TypeError: expected string or buffer的解决方法
错误种类:TypeError: expected string or buffer 具体错误解释:这是因为返回的变量不是字符类型,而导致此错误 具体解决方法:在具体程序段前加if判断语句,判断程序返回 ...
- ubuntu下virtualbox安装freebsd及初步配置
最近尝试了在虚拟机中安装freebsd并进行尝试性的使用 获取镜像 在freebsd的官网,https://www.freebsd.org,即可看到 "Download Freebsd&qu ...
- Linux内核堆栈使用方法 进程0和进程1【转】
转自:http://blog.csdn.net/yihaolovem/article/details/37119971 目录(?)[-] 8 Linux 系统中堆栈的使用方法 81 初始化阶段 82 ...
- ie6、ie7下overflow失效
如果父对象有overflow:hidden属性,子对象中的position属性是relative或者absolute, 那么在ie6和ie7下父对象的overflow会失效,解决办法是给父对象加rel ...