Validate验证框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>application</param-name> <param-value>res.ApplicationResources_zh_CN</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
9
输入验证2-2
validation.xml
<form-validation> <formset> <form name="loginForm" > <field property="loginName" depends="minlength"> </field> </form> </formset> </form-validation>
12
创建视图组件
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> package validator; 创建一个用于存放用户名属性的 ActionForm 创建 JSP 页 <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> import org.apache.struts.action.ActionForm; <%@ org.apache.struts.action.ActionErrors; <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> import taglib uri="/WEB-INF/struts-template.tld" prefix="template"% 创建 login.jsp 创建 LoginForm.java <%@ org.apache.struts.action.ActionMapping; <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %> import taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 创建 success.jsp <%@ javax.servlet.http.HttpServletRequest; <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> import taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ class uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> public taglib LoginForm extends ActionForm { <html:html> userName; <html:html> public String <head> <body> String getUserName() { public <title>成功</title> <logic:messagesPresent> return userName; </head> 欢迎! } <body bgcolor="#ffffc0"> <ul><fontvoid setUserName(String userName) { public color='red' ><html:messages id="error"> <h1>登录名正确!</h1> <li><%= error %></li></html:messages></font></ul> userName = string; <p>欢迎 </logic:messagesPresent> } <bean:write name = "loginForm" property="userName"/> <html:form action="loginSubmit" method="post"> public ActionErrors validate(ActionMapping actionMapping, !</p> HttpServletRequest httpServletRequest) <bean:message key="loginForm.userName"/> { </body> <html:text property='userName'/> <br /> return null; </html:html> <html:submit value=“提交"/> } </html:form></body></html:html> actionMapping, public void reset(ActionMapping HttpServletRequest servletRequest) { }
8
输入验证2-1
• Struts Validator 插件允许编写可重用验证例程 • 验证逻辑单独的 xml 文件中实现 Validator-rules.xml
<formset> <form name="loginActionForm"> <field property="loginName" depends="minlength"> name="minlength" <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> </field> </form> </formset>
• 1.在struts-config.xml文件中配置validate验证插件,在web-inf下建立 1.在struts-config.xml文件中配置validate验证插件 文件中配置validate验证插件, web-inf下建立 validation.xml文件 validation.xml文件 • 2.建立资源文件,并在struts-config.xml中注册 2.建立资源文件,并在struts-config.xml中注册 建立资源文件 struts • 3.建立Form(继承自ValidatorForm),在struts-config.xml中注册,注意 3.建立Form(继承自ValidatorForm), struts-config.xml中注册 建立Form(继承自ValidatorForm) 中注册, 属性配置。 属性配置。 • 4.建立JSP页面 4.建立JSP页面 建立JSP • 5.建立Action类并注册 5.建立Action类并注册 建立Action • 6.在validation.xml中根据表单信息,设定校验规则 6.在validation.xml中根据表单信息, 中根据表单信息 • 7.如使用javascript验证,则将validate属性设置为false 7.如使用javascript验证,则将validate属性设置为false 如使用javascript验证 validate属性设置为 – 修改JSP页面的form属性添加 修改JSP页面的form属性添加 JSP页面的form – “onsubmit= return validateEmailForm(this);” onsubmit=”return – 其中EmailForm为Form类的名字 其中EmailForm为Form类的名字 EmailForm – 在页面最后添加<html:javascript formName="emailForm"/>
10
Struts 应用程序演示
欢迎! 用户名:
Tomcat Jerry
已验证
提交
错误
欢迎! * 用户名不能少于 6 个字符 用户名:
登录名正确! 登录名正确!
欢迎 Tomcat!
提交
11
创建控制器组件
创建一个动作
package validator; import 创建 LoginAction.java org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForward; import org.apache.struts.action.Action; public class LoginAction extends Action { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm,HttpServletRequest servletRequest, HttpServletResponse servletResponse) { LoginForm loginForm = (LoginForm) actionForm; String name = loginForm.getUserName(); if (name.length() >= 6) { return actionMapping.findForward("success"); } return null;}}
将Struts发行包中的commons-validator.jar和jakarta-oro.jar 这两个文件放到Web应用的WEB-INF/lib目录中。
5
Validator验证框架
在配置文件struts-config.xml中配置 ValidatorPlugIn插件
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> ... 在Struts1.3中validator-rules.xml文件在系统核心包中,该文件是通用文件, 文件在系统核心包中,该文件是通用文件, 文件在系统核心包中 一般不需要修改 所以配置代码可修改为 <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> 值用来指定验证规则的文件的路径, 注:value值用来指定验证规则的文件的路径,多个验证规则文件要用逗号分割 值用来指定验证规则的文件的路径
Validator验证框架
目标
• 掌握Validator验证框架 • 了解Struts 组件包
2
配置资源文件-1
• 配置 这个配置说明你的资源包的名字是 <servlet> config.xml 文件。首先来看web.xml 文件的配置: ApplicationResources.properties,它位于res包中。后 <servlet-name>actionServlet</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet缀”.properties” 是隐含的,你不必显式地写出来。如果你还 class> 有另一个资源文件在相同的包中,例如 ApplicationResources_fr.properties ,用来支持法语,你只 <init-param> <param-name>config</param-name> 需要象上面定义的那样列出文件名字即可。
属性parameter 是必须的。和在web.xml文件中配置一样, 需要注意 的是文件在包中的位置。 使用struts-config.xml 文件来配置消息资源文件是推荐的做法, 因为它更有可扩展性,更灵活。 你可以使用message-resources 标签从不同的资源文件取不同的消息, 前提是在配置的时候为不同的资源文件给出不同的key 属性的值。
4
Validator验证框架
• 利用Struts的提供的Validator验证框架可实现客户端和服务器端双验证。 • Struts的Validator验证框架定义了常用的十几个验证规则,如: required(验证非空)、minlength(验证最小长度)、maxlength(验证最大长 度)、intRange(验证整形范围)、email(验证电子邮件地址)、date(验证日期) 等,并且实现了客户端的Javascript验证和服务器端验证,
3
– 有两种途径通知Struts你的资源包的位置:web.xml 文件或源自文库struts-
配置资源文件-2
• 定义资源文件的第二中方法(上面已经提到),是在 struts-config.xml 文件中配置
<message-resources parameter="res.ApplicationResources" key="myres"></message-resources> <message-resources parameter="res.ApplicationResources_zh_CN"></messageresources>
6
• 注:Validator框架不能用于验证标准的 org.apache.struts.action.ActionForm类。 • 如果要使用Validator框架应该采用 ActionForm类的两个子类: DynavalidatorForm和ValidatorForm。
7
使用Validate验证框架的步骤
9
输入验证2-2
validation.xml
<form-validation> <formset> <form name="loginForm" > <field property="loginName" depends="minlength"> </field> </form> </formset> </form-validation>
12
创建视图组件
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> package validator; 创建一个用于存放用户名属性的 ActionForm 创建 JSP 页 <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %> import org.apache.struts.action.ActionForm; <%@ org.apache.struts.action.ActionErrors; <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> import taglib uri="/WEB-INF/struts-template.tld" prefix="template"% 创建 login.jsp 创建 LoginForm.java <%@ org.apache.struts.action.ActionMapping; <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %> import taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 创建 success.jsp <%@ javax.servlet.http.HttpServletRequest; <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> import taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ class uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> public taglib LoginForm extends ActionForm { <html:html> userName; <html:html> public String <head> <body> String getUserName() { public <title>成功</title> <logic:messagesPresent> return userName; </head> 欢迎! } <body bgcolor="#ffffc0"> <ul><fontvoid setUserName(String userName) { public color='red' ><html:messages id="error"> <h1>登录名正确!</h1> <li><%= error %></li></html:messages></font></ul> userName = string; <p>欢迎 </logic:messagesPresent> } <bean:write name = "loginForm" property="userName"/> <html:form action="loginSubmit" method="post"> public ActionErrors validate(ActionMapping actionMapping, !</p> HttpServletRequest httpServletRequest) <bean:message key="loginForm.userName"/> { </body> <html:text property='userName'/> <br /> return null; </html:html> <html:submit value=“提交"/> } </html:form></body></html:html> actionMapping, public void reset(ActionMapping HttpServletRequest servletRequest) { }
8
输入验证2-1
• Struts Validator 插件允许编写可重用验证例程 • 验证逻辑单独的 xml 文件中实现 Validator-rules.xml
<formset> <form name="loginActionForm"> <field property="loginName" depends="minlength"> name="minlength" <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> </field> </form> </formset>
• 1.在struts-config.xml文件中配置validate验证插件,在web-inf下建立 1.在struts-config.xml文件中配置validate验证插件 文件中配置validate验证插件, web-inf下建立 validation.xml文件 validation.xml文件 • 2.建立资源文件,并在struts-config.xml中注册 2.建立资源文件,并在struts-config.xml中注册 建立资源文件 struts • 3.建立Form(继承自ValidatorForm),在struts-config.xml中注册,注意 3.建立Form(继承自ValidatorForm), struts-config.xml中注册 建立Form(继承自ValidatorForm) 中注册, 属性配置。 属性配置。 • 4.建立JSP页面 4.建立JSP页面 建立JSP • 5.建立Action类并注册 5.建立Action类并注册 建立Action • 6.在validation.xml中根据表单信息,设定校验规则 6.在validation.xml中根据表单信息, 中根据表单信息 • 7.如使用javascript验证,则将validate属性设置为false 7.如使用javascript验证,则将validate属性设置为false 如使用javascript验证 validate属性设置为 – 修改JSP页面的form属性添加 修改JSP页面的form属性添加 JSP页面的form – “onsubmit= return validateEmailForm(this);” onsubmit=”return – 其中EmailForm为Form类的名字 其中EmailForm为Form类的名字 EmailForm – 在页面最后添加<html:javascript formName="emailForm"/>
10
Struts 应用程序演示
欢迎! 用户名:
Tomcat Jerry
已验证
提交
错误
欢迎! * 用户名不能少于 6 个字符 用户名:
登录名正确! 登录名正确!
欢迎 Tomcat!
提交
11
创建控制器组件
创建一个动作
package validator; import 创建 LoginAction.java org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForward; import org.apache.struts.action.Action; public class LoginAction extends Action { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm,HttpServletRequest servletRequest, HttpServletResponse servletResponse) { LoginForm loginForm = (LoginForm) actionForm; String name = loginForm.getUserName(); if (name.length() >= 6) { return actionMapping.findForward("success"); } return null;}}
将Struts发行包中的commons-validator.jar和jakarta-oro.jar 这两个文件放到Web应用的WEB-INF/lib目录中。
5
Validator验证框架
在配置文件struts-config.xml中配置 ValidatorPlugIn插件
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> ... 在Struts1.3中validator-rules.xml文件在系统核心包中,该文件是通用文件, 文件在系统核心包中,该文件是通用文件, 文件在系统核心包中 一般不需要修改 所以配置代码可修改为 <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> 值用来指定验证规则的文件的路径, 注:value值用来指定验证规则的文件的路径,多个验证规则文件要用逗号分割 值用来指定验证规则的文件的路径
Validator验证框架
目标
• 掌握Validator验证框架 • 了解Struts 组件包
2
配置资源文件-1
• 配置 这个配置说明你的资源包的名字是 <servlet> config.xml 文件。首先来看web.xml 文件的配置: ApplicationResources.properties,它位于res包中。后 <servlet-name>actionServlet</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet缀”.properties” 是隐含的,你不必显式地写出来。如果你还 class> 有另一个资源文件在相同的包中,例如 ApplicationResources_fr.properties ,用来支持法语,你只 <init-param> <param-name>config</param-name> 需要象上面定义的那样列出文件名字即可。
属性parameter 是必须的。和在web.xml文件中配置一样, 需要注意 的是文件在包中的位置。 使用struts-config.xml 文件来配置消息资源文件是推荐的做法, 因为它更有可扩展性,更灵活。 你可以使用message-resources 标签从不同的资源文件取不同的消息, 前提是在配置的时候为不同的资源文件给出不同的key 属性的值。
4
Validator验证框架
• 利用Struts的提供的Validator验证框架可实现客户端和服务器端双验证。 • Struts的Validator验证框架定义了常用的十几个验证规则,如: required(验证非空)、minlength(验证最小长度)、maxlength(验证最大长 度)、intRange(验证整形范围)、email(验证电子邮件地址)、date(验证日期) 等,并且实现了客户端的Javascript验证和服务器端验证,
3
– 有两种途径通知Struts你的资源包的位置:web.xml 文件或源自文库struts-
配置资源文件-2
• 定义资源文件的第二中方法(上面已经提到),是在 struts-config.xml 文件中配置
<message-resources parameter="res.ApplicationResources" key="myres"></message-resources> <message-resources parameter="res.ApplicationResources_zh_CN"></messageresources>
6
• 注:Validator框架不能用于验证标准的 org.apache.struts.action.ActionForm类。 • 如果要使用Validator框架应该采用 ActionForm类的两个子类: DynavalidatorForm和ValidatorForm。
7
使用Validate验证框架的步骤