<?xml version="1.0" encoding="GBK"?> <project name="struts" basedir="." default=""> <property name="dist" value="classes"/> <property name="src" value="src"/> <path id="classpath"> <fileset dir="lib"> <include name="*.jar"/> </fileset> <pathelement path="${dist}"/> </path> <target name="compile" description="Compile all source code"> <delete dir="${dist}"/> <mkdir dir="${dist}"/> <copy todir="${dist}"> <fileset dir="${src}"> <exclude name="**/*.java"/> </fileset> </copy> <javac destdir="classes" debug="true" includeantruntime="yes" deprecation="false" optimize="false" failonerror="true"> <src path="${src}"/> <classpath refid="classpath"/> </javac> </target> </project>
<?xml version="1.0" encoding="GBK"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 定義Struts 2的核心Filter --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- 讓Struts 2的核心Filter攔截全部請求 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
<%-- 網站: <a href="http://www.crazyit.org">瘋狂Java聯盟</a> author yeeku.H.lee kongyeeku@163.com version 1.0 Copyright (C), 2001-2016, yeeku.H.Lee This program is protected by copyright laws. Program Name: Date: --%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>請輸入您的註冊信息</title> <s:head/> </head> <body> <h2>請輸入您的註冊信息</h2> <s:fielderror/> <s:form action="regist"> <s:textfield name="name" label="用戶名"/> <s:textfield name="pass" label="密碼"/> <s:textfield name="age" label="年齡"/> <s:textfield name="birth" label="生日"/> <s:submit value="註冊"/> </s:form> </body> </html>
<%-- 網站: <a href="http://www.crazyit.org">瘋狂Java聯盟</a> author yeeku.H.lee kongyeeku@163.com version 1.0 Copyright (C), 2001-2016, yeeku.H.Lee This program is protected by copyright laws. Program Name: Date: --%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>校驗成功</title> </head> <body> <h3>校驗成功</h3> 用戶名:<s:property value="name"/><br/> 密碼:<s:property value="pass"/><br/> 年齡:<s:property value="age"/><br/> 生日:<s:property value="birth"/><br/> </body> </html>
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.i18n.encoding" value="GBK"/> <package name="lee" extends="struts-default"> <action name="regist" class="org.crazyit.app.action.RegistAction"> <result name="input">/WEB-INF/content/registForm.jsp</result> <result>/WEB-INF/content/show.jsp</result> </action> <action name="*"> <result>/WEB-INF/content/{1}.jsp</result> </action> </package> </struts>
package org.crazyit.app.action; import com.opensymphony.xwork2.ActionSupport; import java.util.*; /** * Description: * <br/>網站: <a href="http://www.crazyit.org">瘋狂Java聯盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ public class RegistAction extends ActionSupport { private String name; private String pass; private int age; private Date birth; // name的setter和getter方法 public void setName(String name) { this.name = name; } public String getName() { return this.name; } // pass的setter和getter方法 public void setPass(String pass) { this.pass = pass; } public String getPass() { return this.pass; } // age的setter和getter方法 public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } // birth的setter和getter方法 public void setBirth(Date birth) { this.birth = birth; } public Date getBirth() { return this.birth; } public void validate() { System.out.println("進入validate方法進行校驗" + name); // 要求用戶名必須包含crazyit子串 if(!name.contains("crazyit")) { addFieldError("user" , "您的用戶名必須包含crazyit!"); } } }
xwork.default.invalid.fieldvalue={0}字段無效 name.requried=您必須輸入用戶名! name.regex=您輸入的用戶名只能是字母和數組,且長度必須在4到25之間! pass.requried=您必須輸入密碼! pass.regex=您輸入的密碼只能是字母和數組,且長度必須在4到25之間! age.range=您的年齡必須在${min}和${max}之間! birth.range=您的生日必須在${min}和${max}之間!
xwork.default.invalid.fieldvalue={0}\u5b57\u6bb5\u65e0\u6548 name.requried=\u60a8\u5fc5\u987b\u8f93\u5165\u7528\u6237\u540d! name.regex=\u60a8\u8f93\u5165\u7684\u7528\u6237\u540d\u53ea\u80fd\u662f\u5b57\u6bcd\u548c\u6570\u7ec4\uff0c\u4e14\u957f\u5ea6\u5fc5\u987b\u57284\u523025\u4e4b\u95f4! pass.requried=\u60a8\u5fc5\u987b\u8f93\u5165\u5bc6\u7801! pass.regex=\u60a8\u8f93\u5165\u7684\u5bc6\u7801\u53ea\u80fd\u662f\u5b57\u6bcd\u548c\u6570\u7ec4\uff0c\u4e14\u957f\u5ea6\u5fc5\u987b\u57284\u523025\u4e4b\u95f4! age.range=\u60a8\u7684\u5e74\u9f84\u5fc5\u987b\u5728${min}\u548c${max}\u4e4b\u95f4! birth.range=\u60a8\u7684\u751f\u65e5\u5fc5\u987b\u5728${min}\u548c${max}\u4e4b\u95f4!
<?xml version="1.0" encoding="GBK"?> <!-- 指定校驗配置文件的DTD信息 --> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <!-- 校驗文件的根元素 --> <validators> <!-- 校驗Action的name屬性 --> <field name="name"> <!-- 指定name屬性必須知足必填規則 --> <field-validator type="requiredstring"> <param name="trim">true</param> <message key="name.requried"/> </field-validator> <!-- 指定name屬性必須匹配正則表達式 --> <field-validator type="regex"> <param name="regex"><![CDATA[(\w{4,25})]]></param> <message key="name.regex"/> </field-validator> </field> <!-- 校驗Action的pass屬性 --> <field name="pass"> <!-- 指定pass屬性必須知足必填規則 --> <field-validator type="requiredstring"> <param name="trim">true</param> <message key="pass.requried"/> </field-validator> <!-- 指定pass屬性必須知足匹配指定的正則表達式 --> <field-validator type="regex"> <param name="regex"><![CDATA[(\w{4,25})]]></param> <message key="pass.regex"/> </field-validator> </field> <!-- 指定age屬性必須在指定範圍內--> <field name="age"> <field-validator type="int"> <param name="min">1</param> <param name="max">150</param> <message key="age.range"/> </field-validator> </field> <!-- 指定birth屬性必須在指定範圍內--> <field name="birth"> <field-validator type="date"> <!-- 下面指定日期字符串時,必須使用本Locale的日期格式 --> <param name="min">1900-01-01</param> <param name="max">2050-02-21</param> <message key="birth.range"/> </field-validator> </field> </validators>