Struts2 框架 实现生日形式转化 + 根据当前系统日期显示年龄(实岁)

mac2026-10-02  0

题目要求:

使用Struts2框架实现如下功能: 在网页date.jsp中提供一个文本框和提交按钮,按照“年-月-日”的形式提交生日,例如:1999-11-10,自定义一个转换器,在网页show.jsp中分别输出年、月、日,并根据当前系统日期显示年龄(实岁),例如:如果当前日期为2019年11月1日,则显示19岁;如果当前日期为2019年11月11日,则显示20岁。


效果图

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="myBirthday" method="post"> <s:textfield name="bir" label="请输入出生日期(XXXX-XX-XX)"></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" %> <html> <head> <title>自定义类型转换器</title> </head> <body> <s:property value="bir"/><br> 年: <s:property value="bir.year"/><br> 月: <s:property value="bir.month"/><br> 日: <s:property value="bir.day"/><br> <br> 年龄:<%=session.getValue("age") %> </body> </html>

MyTypeConverterAction.java

package com.chocolate.action; import java.util.Calendar; import java.util.Map; import com.chocolate.vo.Birthday; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class MyTypeConverterAction extends ActionSupport{ private Birthday bir; public Birthday getBir() { return bir; } public void setBir(Birthday bir) { this.bir = bir; } public String execute() throws Exception{ Calendar cal = Calendar.getInstance(); int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH)+1; //Java规定起始时间为1900-0-1; int dayNow = cal.get(Calendar.DAY_OF_MONTH); int yearBirth=Integer.parseInt(bir.getYear()); int monthBirth=Integer.parseInt(bir.getMonth()); int dayBirth=Integer.parseInt(bir.getDay()); int age=yearNow-yearBirth; if(monthNow<=monthBirth){ if(monthNow == monthBirth){ if (dayNow < dayBirth) age--; }else{ age--; } } ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); session.put("age", age); return SUCCESS; } }

MyTypeConverterAction-conversion.properties

bir=com.chocolate.converter.MyTypeConverter

MyTypeConverter.java

package com.chocolate.converter; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; import com.chocolate.vo.Birthday; public class MyTypeConverter extends StrutsTypeConverter{ public Object convertFromString(Map arg0,String[] arg1,Class arg2){ Birthday bir=new Birthday(); String[] str=arg1[0].split("-"); bir.setYear(str[0]); bir.setMonth(str[1]); bir.setDay(str[2]); return bir; } public String convertToString(Map arg0,Object arg1){ Birthday bir=(Birthday)arg1; return "["+bir.getYear()+"-"+bir.getMonth()+"-"+bir.getDay()+"]"; } }

Birthday.java

package com.chocolate.vo; public class Birthday { private String year; private String month; private String day; public String getYear() { return year; } public void setYear(String year) { this.year = year; } public String getMonth() { return month; } public void setMonth(String month) { this.month = month; } public String getDay() { return day; } public void setDay(String day) { this.day = day; } }

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