Struts2校验框架 【校验学生的基本信息】【validators 】

mac2026-09-03  7

题目要求:

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


效果图

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <html> <head> <title>注册页面</title> </head> <body> <s:form action="myform" method="post"> <s:textfield name="stu.id" label="学号"></s:textfield> <s:textfield name="stu.username" label="姓名"></s:textfield> <s:radio name="stu.agender" list="#{1:'男',0:'女'}" label="性别" value="1"></s:radio> <s:textfield name="stu.bir" label="出生年月" placeholder="xxxx-xx-xx"></s:textfield> <s:textfield name="stu.major" label="专业"></s:textfield> <s:textfield name="stu.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="stu.username"/>!您已经注册成功! </body> </html>

RegistAction.java

package com.stu.action; import java.util.*; import com.stu.vo.Student; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class RegistAction extends ActionSupport { private Student stu; public Student getStu() { return stu; } public void setStu(Student stu) { this.stu = stu; } public String execute() throws Exception { if(hasErrors()){ return INPUT; } return SUCCESS; } public void validate(){ Calendar cal = Calendar.getInstance(); String[] str = stu.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("stu.bir", "出生年月必须保证年龄大于等于18岁!"); } } }

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="stu.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="stu.major"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>专业不能为空!</message> </field-validator> </field> <field name="stu.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>

Student.java

package com.stu.vo; public class Student { //学号、姓名、性别、出生年月、专业、总学分 private String id; private String username; private String agender; private String bir; //生日类/自定义类型转换/将生日的年月取出方便计算年龄 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 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; } }

struts.xml

<?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.stu.action.RegistAction"> <result name="success">/success.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts> 学如逆水行舟,不进则退 一百个Chocolate 认证博客专家 博客专家 博客之星 前端开发攻城狮 掘金搜【一百个Chocolate】座右铭:学如逆水行舟,不进则退!公众号:小狮子前端 期待小狮子们的加入~
最新回复(0)