Struts的出现就是为了全面消除服务器断程序的脚本嵌套,全面分层,通常我们的表单在提交时都需要进行数据验证,而这在以前通常是用客户端的javascript进行过滤后再由服务器端的脚本进行验证,这样的缺点是移植性很差,每次都需要重新编写源程序,而struts框架则提供了一个很好的验证机制,它不需要再编写脚本,而是通过验证器进行验证.
struts验证又分为2种,一种是在ActionForm bean表单属性JavaBean的validate()方法中定义,在服务器断验证;另外一种则是通过验证器分别在客户端和服务器端进行双层验证.
1.在ActionForm Bean中验证:
首先需要介绍Struts的工作原理:
(1).用户从表单提交数据,JSF表现为:<html:form action="/login">,普通JSP表现为:<form action="/login.do">
(2),程序将通过Struts配置文件(既ActionServlet)struts-config.xml的<action>节点下的path属性的值与form的action属性值进行匹配,如果配上了,程序将通过本action的name属性所对应的值与<form-bean>节点的name进行匹配,如果成功,则通过<form-bean>的type属性值找到ActionForm bean的类文件.
(3)如果action中的validate属性设置为true或yes的话,程序将调用ActionForm bean的public ActionErrors validate(ActionMapping mapp,HttpServletRequest req)方法进行验证,结果返回一个ActionErrors类型以便我们将其catch住.
(4)程序将ActionForm的各个属性做为参数传回给Action,Action再调用具体业务处理的JavaBean进行商业活动,再将程序转向View层的显示页面
具体方法:
1.创建表单login.jsp 由JSF实现
2.建立ActionForm类 loginForm.java
package com.liuhao.struts;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import javax.servlet.http.HttpServletRequest;
public class loginForm extends ActionForm{
//定义属性,和表单里一致
private String userName,passWord;
public ActionForm(){
super();
}
//数据验证方法
public ActionErrors validate(ActionMapping mapp,HttpServletRequest req){
ActionErrors errors=new ActionErrors();
if(this.userName==null || this.passWord==null)
errors.add("loginName",new ActionError("errors.required","userName and passWord fie));
return errors;
}
public void reset(ActionMapping mapp,HttpServletRequest req){
this.userName="";
this.passWord="";
}
//定义相关属性的 getter和setter
public void setUserName(String userName){
this.userName=userName;
}
public void setPassWord(String passWord){
this.passWord=passWord;
}
public String getUserName(){
return this.userName;
}
public String getPassWord(){
return this.passWord;
}
}
3.定义Action类 loginAction.java
package com.liuhao.struts;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class loginAction extends Action{
public loginAction(){
super():
}
public ActionForward execute(ActionMapping mapp,ActionForm form,HttpServletRequest req,HttpServletResponse res)throws Exception{
org.com.liuhao.struts.loginForm Form=(loginForm)form;
//将form对象实例写入当前请求中
req.setAttribute("form",Form);
//转向输出页面
return mapp.findForward("sucess");
}
}
3.编写输出文件out.jsp
4.配置文件:struts-config.xml
在<form-beans>中定义formbean
<form-bean name="loginForm" type="com.liuhao.struts.loginForm">
<form-property name="userName" type="java.lang.String"/>
<form-property name="passWord" type="java.lang.String"/>
</form-bean>
在<action-mapping>中定义action
<action name="loginForm" path="/login" type="com.liuhao.struts.loginAction"
input="/index.jsp" validate="true">
<forward name="sucess" path="/out.jsp"/>
</action>
5。在application resource中定义:error.requires={0} is not allowed null
6.即可测试程序:"如果没有输入任何信息,login.jsp会输出:username and passWord field is not allowed null
注解: 这样的方式优点是:彻底了消除了脚本的存在,是程序得到了很好的分层,但是却也寸在着移植性差的问题,因为每修改一次严整程序,都需要到loginForm中去修改validate方法.
////********************
2.在验证器中验证:
(1).修改login.jsp的<html:form>为 :<html:form action="/login" onsubmit="return vaidateLoginForm(this)"/>
在程序中加入:<html:javascript formname="loginForm"/>用与生成客户端javascript代码
(2)编辑 validation.xml文件完成对验证器的部署,struts提供众多验证器,如Required Validator,Mask Validator等,其中Required Validator为验证程序是否为空的验证器,也是本例中使用的验证器。
在 <form-validation>节点中加入:
<formset>
<form name="loginForm"> <!--隐射到loginForm-->
<field property="userName" depends="required">
<msg key="errors.required"/>
<arg0 key="errors.user"/>
</field>
<field property="passWord" depends="required">
<msg key="errors.required"/>
<arg0 key="errors.pass"/>
</field>
</form></formset>
3.在定义完验证器后,就可以运行程序了,如果没有任何输入,将弹出窗口将错误信息显示出来(运用javascript的alert()方法表现);
相关推荐
Struts验证框架配置详解,包括两个需要用到的jar包以及详细配置步骤和实例
struts2 自定义验证程序的实现方法详解 1.对struts2内建验证程序实现的分析 2.详细讲解如何实现自定义验证程序
Struts2开发详解,讲述Struts2开发中的详细配置,已经它的验证,国际化等。
NULL 博文链接:https://quicker.iteye.com/blog/793141
3、Struts1 的验证逻辑编写在 ActionForm 中; Struts2 中的验证逻辑编写在 Action 中. 4、Struts1 中, Action 类必须继承 org.apache.struts.action.Action 类; Struts2 中任何一个 POJO 都可以是一个 Action 类. 5...
里面包括<html><bean><logic><tiles><nested><br>五组标签库的详细... 另外还有国际化(文字国际化/图片国际化)、 表单验证,以及验证框架 例子是用JBuilder2006做的 绝对经典!!!!!!!!!!!!!
Struts的Validator-rules详解
struts2校验器类型详解 配合我的名称为 : Struts2总结-2 资源看
Struts中的验证规则,介绍struts中的验证规则,详解。
对struts2的内部详细讲解 例如:struts xml struts2的action使用 以及国际化 验证等技术
12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...
IBMStruts2培训PPT (大全集) 主讲:刘雷 完整实用 第一章:认识体验Struts2.ppt ...第七章:Struts2验证机制.ppt 第八章:struts2文件上传下载.ppt 第九章:struts2拦截器.ppt + Struts2开发详解.ppt
Struts核心流程,标签库,验证框架详解及Struts的特性分析
主要介绍了Struts2数据输入验证教程详解的相关资料,输入数据验证的方法有两种,本文给大家介绍的非常详细,需要的朋友可以参考下
主要介绍了Java的Struts框架中上传文件和客户端验证的实现,Struts是Java的SSH三大web开发框架之一,需要的朋友可以参考下
12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...
11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 com.opensymphony.xwork2.ActionChainResult 16 dispatcher 16 用来转向页面,通常处理JSP 16 org....
12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...
很好的struts框架资料,包括java web编程基础、struts入门、struts详解、struts国际化和数据验证