- 浏览: 91577 次
- 性别:
- 来自: 北京
最新评论
-
jinkingmanager:
看了,感觉好温馨啊
十年之恋,七年之痒 -
bevis.cn:
我有遇到问题,我用response.sendRedirect( ...
怎么使用SSL -
liudaoru:
按照分钟切割日志:log4j.appender.A1.Date ...
log4j 按时间、大小产生新的日志文件 -
xuehu2010:
你好!请问我如果想用servlet做服务器端,用applet做 ...
Socket编程 -
lb_yyy:
xiexei
请问:log4j.appender.R.F ...
log4j 按时间、大小产生新的日志文件
在struts中用validator作服务器端验证
作者:未知 文章来源:转载 点击数: 183 更新时间:2007-3-13
这个例子用的是struts1.2.4自带的,但愿能给你学习带来帮助。例子的目录结构和所有用到的文件,请从本站下载。
一、Form bean与jsp页面
先看jsp页面的表单,内容有姓名,地址,省(市),县,邮编,电话,E-mail。
下面是Form bean,它在struts-config.xml中的命名是registrationForm。一定要继承ValidatorForm,注意这个CityStateZip属性,它用来存放:省(市),县,邮编三项内容。
package org.apache.struts.webapp.validator;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;
public final class RegistrationForm extends ValidatorForm implements Serializable {
private String action = null;
private String sFirstName = null;
private String sLastName = null;
private String sAddr = null;
private CityStateZip csz = new CityStateZip();
private String sPhone = null;
private String sEmail = null;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getFirstName() {
return sFirstName;
}
public void setFirstName(String sFirstName) {
this.sFirstName = sFirstName;
}
public String getLastName() {
return sLastName;
}
public void setLastName(String sLastName) {
this.sLastName = sLastName;
}
public String getAddr() {
return sAddr;
}
public void setAddr(String sAddr) {
this.sAddr = sAddr;
}
public CityStateZip getCityStateZip() {
return csz;
}
public void setCityStateZip(CityStateZip csz) {
this.csz = csz;
}
public String getPhone() {
return sPhone;
}
public void setPhone(String sPhone) {
this.sPhone = sPhone;
}
public String getEmail() {
return sEmail;
}
public void setEmail(String sEmail) {
this.sEmail = sEmail;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
action = null;
sFirstName = null;
sLastName = null;
sAddr = null;
csz = new CityStateZip();
sPhone = null;
sEmail = null;
}
}
这是类CityStateZip的源码,它对应省(市),县,邮编,看后面的jsp页面就知道:邮编存放在字符串数组sZipPostal[]的第二项,其它两项为null。
package org.apache.struts.webapp.validator;
public class CityStateZip implements java.io.Serializable {
private String sCity = null;
private String sStateProv = null;
private String[] sZipPostal = new String[3];
public String getCity() {
return sCity;
}
public void setCity(String sCity) {
this.sCity = sCity;
}
public String getStateProv() {
return sStateProv;
}
public void setStateProv(String sStateProv) {
this.sStateProv = sStateProv;
}
public String getZipPostal(int index) {
return sZipPostal[index];
}
public void setZipPostal(int index, String value) {
this.sZipPostal[index] = value;
}
}
这是含表单的registration.jsp,
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<html:html>
<head>
<title><bean:message key="registrationForm.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<logic:messagesPresent>
<bean:message key="errors.header"/>
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr />
</logic:messagesPresent>
<html:form action="registration-submit">
<html:hidden property="action"/>
<table border="0" width="100%">
<tr>
<th align="left">
<bean:message key="registrationForm.firstname.displayname"/>
</th>
<td align="left">
<html:text property="firstName" size="30" maxlength="30"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.lastname.displayname"/>
</th>
<td align="left">
<html:text property="lastName" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.addr.displayname"/>
</th>
<td align="left">
<html:textarea property="addr" cols="40" rows="5"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.city.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.city" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.stateprov.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.zippostal.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.phone.displayname"/>
</th>
<td align="left">
<html:text property="phone" size="20" maxlength="20"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.email.displayname"/>
</th>
<td align="left">
<html:text property="email" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<td>
<html:submit property="submit">
<bean:message key="button.save"/>
</html:submit>
<html:reset>
<bean:message key="button.reset"/>
</html:reset>
<html:cancel>
<bean:message key="button.cancel"/>
</html:cancel>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
要注意的是下面三个属性的写法,它们的值将会存入form bean(即registrationForm)的CityStateZip属性:
<html:text property="cityStateZip.city" size="60" maxlength="60"/>
<html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
<html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
二、struts-config.xml配置
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="registrationForm" type="org.apache.struts.webapp.validator.RegistrationForm"/>
</form-beans>
<action-mappings>
<action path="/registration-submit"
type="org.apache.struts.webapp.validator.RegistrationAction"
name="registrationForm"
scope="request"
validate="true"
input="/validator/registration.jsp">
<forward name="success" path="/index.jsp"/>
</action>
</action-mappings>
<message-resources parameter="org.apache.struts.webapp.validator.ApplicationResources"/>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
1、struts-config.xml中利用插件加入验证组件validator。涉及四个重要文件,一个是处理表单的RegistrationAction.java,这里仅在日志中输出信息,没有数据库存储,无错误时转到"success"页面。
package org.apache.struts.webapp.validator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public final class RegistrationAction extends Action {
/**
* Commons Logging 日志.
*/
private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
RegistrationForm info = (RegistrationForm)form;
CityStateZip city=info.getCityStateZip();
String action = request.getParameter("action");
if(log.isInfoEnabled()){
log.info("1:="+city.getCity());
log.info("2:="+city.getStateProv());
log.info("3:="+city.getZipPostal(1));
}
// Was this transaction cancelled?
if (isCancelled(request)) {
if (log.isInfoEnabled()) {
log.info(
" "
+ mapping.getAttribute()
+ " - Registration transaction was cancelled");
}
removeFormBean(mapping, request);
return (mapping.findForward("success"));
}
return mapping.findForward("success");
}
protected void removeFormBean(
ActionMapping mapping,
HttpServletRequest request) {
// Remove the obsolete form bean
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
} else {
HttpSession session = request.getSession();
session.removeAttribute(mapping.getAttribute());
}
}
}
}
2、另一个是资源属性文件:ApplicationResources1_zh_CN.properties,使用时请用JDK自带的native2ascii.exe转换为ApplicationResources_zh_CN.properties,并与class文件放在一起。
d:\java\>native2ascii -encoding GBK d:\java\ApplicationResources1_zh_CN.properties >d:\java\ApplicationResources_zh_CN.properties
其中必须包括# Errors中的内容(因为在validator-rules.xml中用到这些信息)
ApplicationResources1_zh_CN.properties
button.cancel=取消
button.confirm=配置
button.reset=重设
button.save=提交
# Errors
errors.footer=
errors.header=<h3><font color="red">验证错误</font></h3>你必须更正下列错误:
errors.ioException=I/O exception rendering error messages: {0}
error.database.missing=<li>User database is missing, cannot validate logon credentials</li>
errors.required={0} 是必填项.
errors.minlength={0} 不能少于 {1} 个字符.
errors.maxlength={0} 不能大于 {1} 个字符.
errors.invalid={0} 是无效的.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
# Registration Form
registrationForm.title=服务器端验证
registrationForm.title.create=创建用户
registrationForm.title.edit=编辑用户信息
registrationForm.firstname.displayname=你的名字:
registrationForm.lastname.displayname=你的姓:
registrationForm.addr.displayname=你的住址:
registrationForm.city.displayname=省市:
registrationForm.stateprov.displayname=州县:
registrationForm.zippostal.displayname=邮编:
registrationForm.phone.displayname=电话:
registrationForm.email.displayname=E-mail:
registrationForm.lastname.maskmsg=姓只能是字符,不能有空格.
3、另两个文件就是下面提到的。
三、Validator配置
复制Validator-rules.xml,Validation.xml到当前应用程序的路径下,比如WEB-INF/(可从struts-examples.war解压后得到)。
1、 Validator-rules.xml里定义的是验证器,以<Validator>的方式存储,默认情况下包含的规则已经可以满足我们程序的需要,一般无需修改。
2、配置validation.xml文件,里面定义的是应用程序特有的验证规则内容,针对表单的属性用正则表达式给出具体的验证法则。
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<global>
<constant>
<constant-name>phone</constant-name>
<constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-
</constant>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}\d*$</constant-value>
</constant>
</global>
<formset>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}(-\d{4})?$</constant-value>
</constant>
<form name="registrationForm">
<field property="firstName" depends="required,mask,minlength">
<arg key="registrationForm.firstname.displayname" position="0"/>
<arg name="minlength" key=" $ {var:minlength}" resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^\w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="lastName" depends="required,mask,maxlength">
<msg name="mask" key="registrationForm.lastname.maskmsg" />
<arg key="registrationForm.lastname.displayname" position="0" />
<arg name="maxlength" key=" $ {var:maxlength}" resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
<field property="addr" depends="required">
<arg key="registrationForm.addr.displayname" />
</field>
<field property="cityStateZip.city" depends="required,mask">
<arg key="registrationForm.city.displayname" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field property="cityStateZip.stateProv" depends="required,mask">
<arg key="registrationForm.stateprov.displayname" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field property="cityStateZip.zipPostal[1]" depends="required,mask">
<arg key="registrationForm.zippostal.displayname" />
<var>
<var-name>mask</var-name>
<var-value></var-value>
</var>
</field>
<field property="phone" depends="mask">
<arg key="registrationForm.phone.displayname" />
<var>
<var-name>mask</var-name>
<var-value></var-value>
</var>
</field>
<field property="email" depends="required,email">
<arg key="registrationForm.email.displayname" />
</field>
</form>
</formset>
</form-validation>
四、测试:下载站长的目录结构TestStruts,将其放入Tomcat的webapps下,在浏览器中输入:
http://127.0.0.1:8080/TestStruts/validator/registration.jsp
作者:未知 文章来源:转载 点击数: 183 更新时间:2007-3-13
这个例子用的是struts1.2.4自带的,但愿能给你学习带来帮助。例子的目录结构和所有用到的文件,请从本站下载。
一、Form bean与jsp页面
先看jsp页面的表单,内容有姓名,地址,省(市),县,邮编,电话,E-mail。
下面是Form bean,它在struts-config.xml中的命名是registrationForm。一定要继承ValidatorForm,注意这个CityStateZip属性,它用来存放:省(市),县,邮编三项内容。
package org.apache.struts.webapp.validator;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;
public final class RegistrationForm extends ValidatorForm implements Serializable {
private String action = null;
private String sFirstName = null;
private String sLastName = null;
private String sAddr = null;
private CityStateZip csz = new CityStateZip();
private String sPhone = null;
private String sEmail = null;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getFirstName() {
return sFirstName;
}
public void setFirstName(String sFirstName) {
this.sFirstName = sFirstName;
}
public String getLastName() {
return sLastName;
}
public void setLastName(String sLastName) {
this.sLastName = sLastName;
}
public String getAddr() {
return sAddr;
}
public void setAddr(String sAddr) {
this.sAddr = sAddr;
}
public CityStateZip getCityStateZip() {
return csz;
}
public void setCityStateZip(CityStateZip csz) {
this.csz = csz;
}
public String getPhone() {
return sPhone;
}
public void setPhone(String sPhone) {
this.sPhone = sPhone;
}
public String getEmail() {
return sEmail;
}
public void setEmail(String sEmail) {
this.sEmail = sEmail;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
action = null;
sFirstName = null;
sLastName = null;
sAddr = null;
csz = new CityStateZip();
sPhone = null;
sEmail = null;
}
}
这是类CityStateZip的源码,它对应省(市),县,邮编,看后面的jsp页面就知道:邮编存放在字符串数组sZipPostal[]的第二项,其它两项为null。
package org.apache.struts.webapp.validator;
public class CityStateZip implements java.io.Serializable {
private String sCity = null;
private String sStateProv = null;
private String[] sZipPostal = new String[3];
public String getCity() {
return sCity;
}
public void setCity(String sCity) {
this.sCity = sCity;
}
public String getStateProv() {
return sStateProv;
}
public void setStateProv(String sStateProv) {
this.sStateProv = sStateProv;
}
public String getZipPostal(int index) {
return sZipPostal[index];
}
public void setZipPostal(int index, String value) {
this.sZipPostal[index] = value;
}
}
这是含表单的registration.jsp,
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<html:html>
<head>
<title><bean:message key="registrationForm.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<logic:messagesPresent>
<bean:message key="errors.header"/>
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr />
</logic:messagesPresent>
<html:form action="registration-submit">
<html:hidden property="action"/>
<table border="0" width="100%">
<tr>
<th align="left">
<bean:message key="registrationForm.firstname.displayname"/>
</th>
<td align="left">
<html:text property="firstName" size="30" maxlength="30"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.lastname.displayname"/>
</th>
<td align="left">
<html:text property="lastName" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.addr.displayname"/>
</th>
<td align="left">
<html:textarea property="addr" cols="40" rows="5"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.city.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.city" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.stateprov.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.zippostal.displayname"/>
</th>
<td align="left">
<html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.phone.displayname"/>
</th>
<td align="left">
<html:text property="phone" size="20" maxlength="20"/>
</td>
</tr>
<tr>
<th align="left">
<bean:message key="registrationForm.email.displayname"/>
</th>
<td align="left">
<html:text property="email" size="60" maxlength="60"/>
</td>
</tr>
<tr>
<td>
<html:submit property="submit">
<bean:message key="button.save"/>
</html:submit>
<html:reset>
<bean:message key="button.reset"/>
</html:reset>
<html:cancel>
<bean:message key="button.cancel"/>
</html:cancel>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
要注意的是下面三个属性的写法,它们的值将会存入form bean(即registrationForm)的CityStateZip属性:
<html:text property="cityStateZip.city" size="60" maxlength="60"/>
<html:text property="cityStateZip.stateProv" size="60" maxlength="60"/>
<html:text property="cityStateZip.zipPostal[1]" size="25" maxlength="25"/>
二、struts-config.xml配置
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="registrationForm" type="org.apache.struts.webapp.validator.RegistrationForm"/>
</form-beans>
<action-mappings>
<action path="/registration-submit"
type="org.apache.struts.webapp.validator.RegistrationAction"
name="registrationForm"
scope="request"
validate="true"
input="/validator/registration.jsp">
<forward name="success" path="/index.jsp"/>
</action>
</action-mappings>
<message-resources parameter="org.apache.struts.webapp.validator.ApplicationResources"/>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
1、struts-config.xml中利用插件加入验证组件validator。涉及四个重要文件,一个是处理表单的RegistrationAction.java,这里仅在日志中输出信息,没有数据库存储,无错误时转到"success"页面。
package org.apache.struts.webapp.validator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public final class RegistrationAction extends Action {
/**
* Commons Logging 日志.
*/
private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
RegistrationForm info = (RegistrationForm)form;
CityStateZip city=info.getCityStateZip();
String action = request.getParameter("action");
if(log.isInfoEnabled()){
log.info("1:="+city.getCity());
log.info("2:="+city.getStateProv());
log.info("3:="+city.getZipPostal(1));
}
// Was this transaction cancelled?
if (isCancelled(request)) {
if (log.isInfoEnabled()) {
log.info(
" "
+ mapping.getAttribute()
+ " - Registration transaction was cancelled");
}
removeFormBean(mapping, request);
return (mapping.findForward("success"));
}
return mapping.findForward("success");
}
protected void removeFormBean(
ActionMapping mapping,
HttpServletRequest request) {
// Remove the obsolete form bean
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
} else {
HttpSession session = request.getSession();
session.removeAttribute(mapping.getAttribute());
}
}
}
}
2、另一个是资源属性文件:ApplicationResources1_zh_CN.properties,使用时请用JDK自带的native2ascii.exe转换为ApplicationResources_zh_CN.properties,并与class文件放在一起。
d:\java\>native2ascii -encoding GBK d:\java\ApplicationResources1_zh_CN.properties >d:\java\ApplicationResources_zh_CN.properties
其中必须包括# Errors中的内容(因为在validator-rules.xml中用到这些信息)
ApplicationResources1_zh_CN.properties
button.cancel=取消
button.confirm=配置
button.reset=重设
button.save=提交
# Errors
errors.footer=
errors.header=<h3><font color="red">验证错误</font></h3>你必须更正下列错误:
errors.ioException=I/O exception rendering error messages: {0}
error.database.missing=<li>User database is missing, cannot validate logon credentials</li>
errors.required={0} 是必填项.
errors.minlength={0} 不能少于 {1} 个字符.
errors.maxlength={0} 不能大于 {1} 个字符.
errors.invalid={0} 是无效的.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
# Registration Form
registrationForm.title=服务器端验证
registrationForm.title.create=创建用户
registrationForm.title.edit=编辑用户信息
registrationForm.firstname.displayname=你的名字:
registrationForm.lastname.displayname=你的姓:
registrationForm.addr.displayname=你的住址:
registrationForm.city.displayname=省市:
registrationForm.stateprov.displayname=州县:
registrationForm.zippostal.displayname=邮编:
registrationForm.phone.displayname=电话:
registrationForm.email.displayname=E-mail:
registrationForm.lastname.maskmsg=姓只能是字符,不能有空格.
3、另两个文件就是下面提到的。
三、Validator配置
复制Validator-rules.xml,Validation.xml到当前应用程序的路径下,比如WEB-INF/(可从struts-examples.war解压后得到)。
1、 Validator-rules.xml里定义的是验证器,以<Validator>的方式存储,默认情况下包含的规则已经可以满足我们程序的需要,一般无需修改。
2、配置validation.xml文件,里面定义的是应用程序特有的验证规则内容,针对表单的属性用正则表达式给出具体的验证法则。
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<global>
<constant>
<constant-name>phone</constant-name>
<constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-
</constant>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}\d*$</constant-value>
</constant>
</global>
<formset>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}(-\d{4})?$</constant-value>
</constant>
<form name="registrationForm">
<field property="firstName" depends="required,mask,minlength">
<arg key="registrationForm.firstname.displayname" position="0"/>
<arg name="minlength" key=" $ {var:minlength}" resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^\w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="lastName" depends="required,mask,maxlength">
<msg name="mask" key="registrationForm.lastname.maskmsg" />
<arg key="registrationForm.lastname.displayname" position="0" />
<arg name="maxlength" key=" $ {var:maxlength}" resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
<field property="addr" depends="required">
<arg key="registrationForm.addr.displayname" />
</field>
<field property="cityStateZip.city" depends="required,mask">
<arg key="registrationForm.city.displayname" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field property="cityStateZip.stateProv" depends="required,mask">
<arg key="registrationForm.stateprov.displayname" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<field property="cityStateZip.zipPostal[1]" depends="required,mask">
<arg key="registrationForm.zippostal.displayname" />
<var>
<var-name>mask</var-name>
<var-value></var-value>
</var>
</field>
<field property="phone" depends="mask">
<arg key="registrationForm.phone.displayname" />
<var>
<var-name>mask</var-name>
<var-value></var-value>
</var>
</field>
<field property="email" depends="required,email">
<arg key="registrationForm.email.displayname" />
</field>
</form>
</formset>
</form-validation>
四、测试:下载站长的目录结构TestStruts,将其放入Tomcat的webapps下,在浏览器中输入:
http://127.0.0.1:8080/TestStruts/validator/registration.jsp
发表评论
-
jakarta common简介(转)
2007-12-15 01:19 1031打算写文章介绍其中几个我认为比较通用的东西: Codec 包 ... -
log4j 按时间、大小产生新的日志文件
2007-12-15 00:42 23057我们开发的B/S结构系统,在服务端一般要有日常运行的日志记录。 ... -
java的集合
2007-12-15 00:36 1107java 的集合类包含两部分,一部分是实现了接口Coll ... -
装 用JDring包设置特定时间日程提醒
2007-12-14 22:51 1622UNIX操作系统用cron守护进程来在特定的时间和日期运 ... -
swt中使用ole对象
2007-11-26 15:49 4079在一个视图中包含一个Active X控件需要两个对象的支 ... -
Log的使用
2007-11-16 22:22 1252log4j的基本概念 使用log4 ... -
转 Log4j简介
2007-11-16 22:10 884第1章. Log4j 的优点 Log4j是Apach ... -
C/S socket笔记
2007-11-11 01:16 1329Java提供了一个URL(UniformResource ... -
Socket编程
2007-11-11 00:40 1320服务方: import java.io.*; i ... -
java API中的Proxy的使用
2007-11-06 00:51 2667Proxy 提供用于创建动态代理类和实例的静态方法,它还 ... -
转 基于swt,使用easymock测试驱动开发-gui
2007-11-05 20:10 1170作者:未知 来源:从互联网收集整理并转载 发布时间:200 ... -
转 RCP程序-窗口生成
2007-11-05 20:04 2441eclipse平台下,导入一个应用程序模板后,可以直接运行。这 ... -
Hibernate理论基础
2007-11-03 16:28 13181. 什么是hibernate? 2. hibe ... -
转 汉字问题
2007-11-03 15:17 1200如何实现汉字转化 ... -
转 myspring下的struts和hibernate配置
2007-11-03 11:43 935MyEclipse+struts+Hibernate配置开发2 ...
相关推荐
Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...
本文将详细讲解Struts中的表单验证机制,包括ActionForm Bean的使用、validate()方法和reset()方法,以及如何处理验证错误。 首先,ActionForm Bean是Struts框架中用于存储和管理用户输入数据的Java对象。它需要...
在Struts框架中,表单验证通常通过两个主要方式实现:客户端验证和服务器端验证。 1. 客户端验证: 客户端验证发生在用户的浏览器上,通常使用JavaScript或jQuery等库来执行。这种方式可以即时反馈错误,提高用户...
在深入探讨Struts2验证框架参数之前,我们首先简要回顾一下Struts2框架本身。Struts2是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它提供了一种灵活的方式来构建可扩展的企业级Web应用程序。...
例如,某些字段可能只在特定条件下才需要验证,或者验证规则会根据用户角色的不同而变化。 6. **实现动态验证的步骤** - 分析业务逻辑,确定哪些字段和验证规则需要动态化。 - 设计一个通用的验证类或接口,用于...
这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下Struts2验证框架的基本概念。验证框架基于两个主要组件:Validation拦截器和Action类中的验证配置。Validation...
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...
"Apache+Struts2验证"这个话题涉及到的是针对Apache Struts2框架的安全漏洞检测,特别是S2-053漏洞。 S2-053漏洞全称为"Struts2 REST Plugin远程代码执行",是Apache Struts2框架中的一个严重安全缺陷。该漏洞主要...
在Struts1中,验证框架是处理用户输入数据校验的重要组成部分,它帮助开发者确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。下面将详细介绍Struts1验证框架的使用。 首先,我们来看一下...
Struts7验证框架是用于Java Web开发中的一个关键组件,主要负责处理用户输入数据的验证。这个框架在学习和实际项目开发中具有广泛的应用,因为它能够有效地提高代码的可维护性和减少开发工作量。 传统的Struts框架...
Struts2是一个流行的Java web开发框架,其在处理用户表单数据时提供了强大的验证功能,确保输入的数据符合预期的格式和规则。本文将深入探讨Struts2的表单验证机制。 首先,Struts2的输入验证分为两种方式:手动...
本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和使用Eclipse进行编译。 **一、Struts验证器Validator的基本概念** Struts Validator是Struts框架提供...
struts动态验证小例子,一目了然,一看就会
Struts 图片验证 Struts 图片验证 Struts 图片验证
在Struts2中,登录验证是常见的安全控制机制,用于确保只有合法用户能够访问受保护的资源。 在Struts2中实现登录验证,我们需要以下几个关键组件和步骤: 1. **Action类**:这是处理用户请求的核心,通常包含一个...
### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...
在Struts框架中,`ActionErrors`是一个非常重要的概念,它是Struts提供的一个错误消息容器,主要用于处理表单验证和用户输入的错误信息。在"struts_注册验证_ActionErrors"这个主题中,我们将深入探讨如何利用`...
2. **XML配置**:如果使用XML配置,要检查`validation.xml`是否已经添加到项目的类路径下,并且验证规则配置无误。 3. **拦截器配置**:在`struts.xml`配置文件中,要确保包含了`validation`和`workflow`这两个必要...
在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例主要讲解的是使用XML文件进行表单验证的方法。 首先,让我们理解表单验证的基本...
本视频教程将深入讲解Struts框架下的表单验证机制。 一、Struts表单验证概述 在Struts中,表单验证通常是通过ActionForm对象来实现的。ActionForm是业务逻辑层和表现层之间的桥梁,用于收集和验证用户输入的数据。...