struts1验证
2014-01-12 22:27
330 查看
java代码如下:
web.xml:
struts-config.xml:
validation.xml:
MessageResources.properties:
validateLogin.jsp:
测试:
![](http://img.blog.csdn.net/20140112222517453?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpZXI3NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20140112222523656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVpZXI3NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参考:/article/10837972.html
一、Struts的插件机制:
Struts通过插件机制来给用户扩展Struts功能。
1.提供一个PlugIn接口,init(),destroy()。自定义的插件类就去实现就个类。
2.在Struts的配置文件中,用<plug-in className="...">标记来注册到Struts框架中。
二、Struts中验证框架的使用:
1.安装:
1) 在struts配置文件中添加<plug-in>标记来加载验证框架插件:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
2) 把validator-rules.xml和validation.xml放置在项目的WEB-INF目录下。
3) 在struts配置文件中添加一个<message-resources parameter="MessageResources" />,然后在项目源代码路径中添加MessageREsources_xx_xx.properties,在资源文件中把validator-rules.xml中的一些验证框架要使用到消息拷贝进去。
2.使用:
1) 验证框架要求ActionForm必须继承自ValidatorForm或它的子类ValidatorActionForm,不能重写validate()方法,而且在struts配置文件要配置成需要验证(把对应<action>标记的validate设置为true)。
2) 修改validation.xml来配置针对某个ActionForm的验证规则。
3) 在验证失败后跳转到的页面中用<html:messages>来显示错误消息。
3.用Validator框架做客户端javaScript的验证:
1) 在jsp页面中包含<html:javascript>标签,用formName属性指定要验证的表单名。
表单名要跟validation.xml中配置的name一致。
如:<html:javascript formName="userForm"/>
2) 对需要验证的表单定义onsubmit事件,其中事件名称为validate+"要验证的表单名"
如:<form name="userForm" action="login.do"
onsubmit="return validateUserForm(this)">
三、ValidateForm和ValidateActionForm的区别
如果表单Bean继承自ValidateForm:那么在validation.xml文件中<form>标记配置的name属性值应该对应成struts配置文件中<action>标记的name属性值。
如果表单Bean继承自ValidateActionForm:那么在validation.xml文件中<form>标记配置的name属性值应该对应成struts配置文件中<action>标记的path属性值。这种方式就可针对同一个表单在不同请求路径下的不同验证。
扩展四、如果使用了DispatchAction时,Validate验证框架无法完成工作了。解决方法就是重写org.apache.struts.validator.FieldChecks中所有的方法,添加对parameter="xxx"的区别。
package com.struts1.form; import org.apache.struts.validator.ValidatorForm; public class LoginValidatorForm extends ValidatorForm { private static final long serialVersionUID = 1L; private String email = null; private String password = null; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.struts1.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.struts1.form.LoginValidatorForm; public class LoginValidatorAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginValidatorForm loginValidatorForm = (LoginValidatorForm) form; if (!"admin@163.com".equals(loginValidatorForm.getEmail()) || !"admin123".equals(loginValidatorForm.getPassword())) { return mapping.findForward("fail"); } return mapping.findForward("success"); } }
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>struts1</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>validateLogin.jsp</welcome-file> </welcome-file-list> </web-app>
struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="loginValidatorForm" type="com.struts1.form.LoginValidatorForm"> <form-property name="email" type="java.lang.String" /> <form-property name="password" type="java.lang.String" /> </form-bean> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> </global-forwards> <action-mappings> <action path="/validateLogin" type="com.struts1.action.LoginValidatorAction" name="loginValidatorForm" scope="request" validate="true" input="/validateLogin.jsp"> <forward name="fail" path="/fail.jsp" /> <forward name="success" path="/success.jsp" /> </action> </action-mappings> <message-resources parameter="MessageResources" /> <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> </struts-config>
validation.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <form-validation> <formset> <form name="loginValidatorForm"> <field property="email" depends="required,email"> <arg key="loginValidatorForm.email" /> </field> <field property="password" depends="required,mask"> <arg key="loginValidatorForm.password" /> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z]*$</var-value> </var> </field> </form> </formset> </form-validation>
MessageResources.properties:
# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # -- Standard Errors -- errors.header=<ul> errors.prefix=<li class="error"> errors.suffix=</li> errors.footer=</ul> # -- Struts Validator Error Messages -- errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. errors.maxlength={0} can not be greater than {1} characters. errors.invalid={0} is invalid. errors.byte={0} must be a byte. errors.short={0} must be a short. errors.integer={0} must be an integer. errors.long={0} must be a long. errors.float={0} must be a float. errors.double={0} must be a double. errors.date={0} is not a date. errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors.email={0} is an invalid e-mail address. # -- other -- errors.cancel=Operation cancelled. errors.detail={0} errors.general=The process did not complete. Details should follow. errors.token=Request could not be completed. Operation is not in sequence. errors.twofields=The '{0}' field must have the same value as the '{1}' field. errors.name.required=Name is required. errors.secret.required=Please tell me a secret (it doesn't have to be true). # -- formatting -- format.date=M/d/yyyy h:mm a z format.currency=$#,##0.00;$(#,##0.00) # -- buttons -- button.submit=Submit button.cancel=Cancel button.confirm=Confirm button.reset=Reset button.save=Save # -- messages -- message.detail={0} message.example.simple=This is a simple message. message.example.replaceable=This is <strong>{0}</strong> message with <strong>{1}</strong> parameters. message.welcome=Welcome to the examples page. # -- prompts -- prompt.name=Name prompt.secret=Secret phrase prompt.byte=Byte prompt.creditCard=Credit Card prompt.date=Date prompt.double=Double prompt.email=Email prompt.float=Float prompt.integer=Integer prompt.long=Long prompt.mask=Mask prompt.min=Min. Length prompt.max=Max. Length prompt.range=Range prompt.required=Required prompt.short=Short prompt.password=Password prompt.password2=Password confirmation loginValidatorForm.email=email loginValidatorForm.password=password
validateLogin.jsp:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <html:form action="validateLogin" method="post" onsubmit="return validateLoginValidatorForm(this);"> email:<html:text property="email" /> password:<html:password property="password" /> <html:submit value="login" /> </html:form> <html:javascript formName="loginValidatorForm"/> </body> </html>
测试:
参考:/article/10837972.html
一、Struts的插件机制:
Struts通过插件机制来给用户扩展Struts功能。
1.提供一个PlugIn接口,init(),destroy()。自定义的插件类就去实现就个类。
2.在Struts的配置文件中,用<plug-in className="...">标记来注册到Struts框架中。
二、Struts中验证框架的使用:
1.安装:
1) 在struts配置文件中添加<plug-in>标记来加载验证框架插件:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
2) 把validator-rules.xml和validation.xml放置在项目的WEB-INF目录下。
3) 在struts配置文件中添加一个<message-resources parameter="MessageResources" />,然后在项目源代码路径中添加MessageREsources_xx_xx.properties,在资源文件中把validator-rules.xml中的一些验证框架要使用到消息拷贝进去。
2.使用:
1) 验证框架要求ActionForm必须继承自ValidatorForm或它的子类ValidatorActionForm,不能重写validate()方法,而且在struts配置文件要配置成需要验证(把对应<action>标记的validate设置为true)。
2) 修改validation.xml来配置针对某个ActionForm的验证规则。
3) 在验证失败后跳转到的页面中用<html:messages>来显示错误消息。
3.用Validator框架做客户端javaScript的验证:
1) 在jsp页面中包含<html:javascript>标签,用formName属性指定要验证的表单名。
表单名要跟validation.xml中配置的name一致。
如:<html:javascript formName="userForm"/>
2) 对需要验证的表单定义onsubmit事件,其中事件名称为validate+"要验证的表单名"
如:<form name="userForm" action="login.do"
onsubmit="return validateUserForm(this)">
三、ValidateForm和ValidateActionForm的区别
如果表单Bean继承自ValidateForm:那么在validation.xml文件中<form>标记配置的name属性值应该对应成struts配置文件中<action>标记的name属性值。
如果表单Bean继承自ValidateActionForm:那么在validation.xml文件中<form>标记配置的name属性值应该对应成struts配置文件中<action>标记的path属性值。这种方式就可针对同一个表单在不同请求路径下的不同验证。
扩展四、如果使用了DispatchAction时,Validate验证框架无法完成工作了。解决方法就是重写org.apache.struts.validator.FieldChecks中所有的方法,添加对parameter="xxx"的区别。
相关文章推荐
- Java中实现浮点数的快速简单格式化
- spring+mybatis时会出现Cannot load JDBC driver class
- Java WebService简单使用
- Spring 的事务处理
- Java多线程系列--“基础篇”06之 线程让步
- Struts2 iterator 标签遍历 Map,List,数组
- JavaWEB 常用开发模式MVC+三层结构
- Myeclipse断点调试
- JAVA基础——单例设计模式(饿汉式与懒汉式)
- java API
- MyEclipse启动优化关闭不必要的检查
- struts1登陆
- 【原创】java删除未匹配的文件夹FileFileFilter,FileUtils,删除目录名字不是某个名字的所有文件夹及其子文件夹
- suse10下Java+eclipse安装
- java下Class.forName的作用是什么,为什么要使用它
- java下Class.forName的作用是什么,为什么要使用它
- 使用Eclipse编程常用快捷键
- JAVA项目学习之坦克大战单机版
- JAVA代码查错
- Java final 修饰符知识点总结