Structs1.2的表单验证
一、表单验证?
对用户提交的表单进行验证,可以分为客户端验证和服务器端验证。
Struts1.2中用Form来收集表单中的信息,因此我们对表单的验证是围绕着不同的Form来进行的
二、ActionForm
(1)我们在new Action,Form&Jsp时继承ActionForm
而对表单的验证则放在了生成的Form中的validate()方法
(2)代码编写
1.index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for IndexForm form</title>
</head>
<body>
<html:form action="/index">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
<html:submit/><html:cancel/>
<html:errors property="wrong"/>
</html:form>
</body>
</html>
2.资源文件ApplicationResource.properties
username=username is empty
error.password=password is empty
label.wrong= login failed
3.IndexForm中的validate()方法
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
//进行数据验证
/*
* ActionErrors
* 添加错误信息,用于页面提示
* 对应于页面中的index.jsp中的<html:errors
*/
ActionErrors errors=new ActionErrors();//
if(username.trim().length()<1){
ActionMessage msg1=new ActionMessage("username");//指定资源文件ApplicationResources.properties中的key值
errors.add("username", msg1);//对应<html:errors property="username"/>
}
if(password.trim().length()<1){
ActionMessage msg1=new ActionMessage("error.password");
errors.add("password", msg1);
}
return errors;
}
4.IndexAction中的execute方法
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
IndexForm indexForm = (IndexForm) form;
String username=indexForm.getUsername();
String password=indexForm.getPassword();
LoginSer loginServ=new LoginSer();
if(loginServ.validateUser(username, password)){
request.getSession().setAttribute("user", username);//往session中写入user的值
return mapping.findForward("success");
}else{
//添加错误信息
ActionErrors errors=new ActionErrors();
ActionMessage msg=new ActionMessage("label.wrong");
errors.add("wrong",msg);
this.addErrors(request, errors);
return mapping.getInputForward();//取得默认的input跳转
}
}
5.struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data-sources />
<form-beans >
<form-bean name="indexForm" type="com.linys.struts.form.IndexForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="indexForm"
input="/index.jsp"
name="indexForm"
path="/index"
scope="request"
type="com.linys.struts.action.IndexAction">
<forward
name="success"
path="/main.jsp"
redirect="true" />
</action>
</action-mappings>
<message-resources parameter="com.linys.struts.ApplicationResources" />
</struts-config>
三、ValidatorForm
ValidatorForm使用到了javaScript验证,需要我们
1.在我们在new Action,Form&Jsp时继承ActionForm
2.添加一个Plugin:ValidatorPlugin
其实只是在struts-config.xml中添加
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
3.在WEB-INF下添加文件validation.xml文件
<!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>
<formset>
<form name="userForm">
<field property="userName" depends="required">
<msg name="required" key="error.user"/>
<arg0 key="user.required"/>
</field>
</form>
</formset>
<!--
<Field>对应于一个Form Bean的一个Field
property : 这个Field对应的Form Bean的Field名称,这个名称要跟struts-config.xml文件中的<form-bean>中定义的名字一致
depends : 这个Field依赖于那些校验器的校验,可以使用多个校验器,各个校验器之间使用逗号隔开,验证器在validator-rules.xml中找
<msg>标记说明了当这个Field通不过校验的时候向用户提供的错误信息
name : 指定了对应的校验器
key : 指定了定义在ApplicationResources.properties文件中的错误信息.
注意:
如果不指定msgStruts会使用对应校验器默认查找的错误信息,如
required对应的是errors.required:
我们将validator-rules.xml中的errors.required={0} is required.复制copy到ApplicationResources.properties
具体对应校验器是什么以及它们对应的默认错误信息是什么都validator-rules.xml中查找
<arg0>对应于我们msg中的占位符{0}
其属性key name同msg
-->
</form-validation>
4.需要对我们的jsp页面进行修改
其中 <html:javascript 中的formName指定的是我们在struts-config.xml中注册的form名
onsubmit:调用的方法,是struts在页面生成的脚本,方法基本规则:validate+form名,当然form名中的第一个要大写
5.补充
通过实验我们可以发现虽然继承validatorForm的Form依然有validate()方法,但是我们在validate()中写的代码并不执行
四、DynaActionForm
也是用到了javascript脚本验证,与validatorForm不同的是DynaActionForm将Form的属性也配置到了配置文件,在包结构上就没有了Form包
struts-config.xml片段
<form-beans >
<form-bean name="indexForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String" />
<form-property name="password" type="java.lang.String" />
</form-bean>
</form-beans>
- 大小: 64.8 KB
- 大小: 28.6 KB
- 大小: 53.5 KB
分享到:
相关推荐
Structs1.2框架、Spring2.0和Hibernate3.2以及集成教案,自己整合的,花了将近俩小时,很适用,希望对大家有用!开发M工具用滴是yEclipse 5.5.1 GA
NULL 博文链接:https://zhangyulong.iteye.com/blog/851794
jsp中 struts1.2 包 asdasdasd dasd a
structs-2.3.1.2 api
structs的框架验证登陆,利用validator框架验证登陆用户信息处理
structs1.2 hibernate3.0 spring Oracle JDK1.4.2环境集成
电信 项目 spring2 structs1.2 hibernate3.1
structs中JS验证类型帮助文档。希望你能看得懂~~呵呵 举个例子吧: f.entp_name.setAttribute("datatype","Require"); f.entp_name.setAttribute("msg","企业名称必须填写!"); entp_name是字段名,datatype为...
SSH(Structs Spring Hibernate)开发包 所有jar.rar structs 1.2 hibernate 3.12 spring 2.1
JSP 一个 成功软件 Hiberneter structs1.2
主要讲解了在structs怎样通过Token令牌解决表单重复提交的问题。附带了擦参考项目。
structs1.2 spring2.5 hibernate3.0 java web 对clob大文本 blob图像处理 这是一个完整的例子,整合了ckeidtor,servlet直接显示数据库blob图片, 注意oracle驱动ojdbc14.jar,如果是其他驱动例如ojdbc14_*g都是不...
比较详细的SSH框架搭建教程 Structs1.2 Spring2 Hibernate3.1
关于structs的login验证,此例比较适合刚接触structs的初学者,简单,易懂
Structs学习学习资料Structs学习Structs学习Structs学习Structs学习Structs学习Structs学习Structs学习Structs学习
structs实例structs实例structs实例structs实例
structs validator验证
Structs2开发必用 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ... <result name="IOException" >/error/ioexception.jsp ...
最基本的操作满足你实现意想不到的效果,融合了structs的基本介绍并有效提高控制器对用户操作的管理