`

Structs1.2的表单验证

阅读更多

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以及集成教案

    Structs1.2框架、Spring2.0和Hibernate3.2以及集成教案,自己整合的,花了将近俩小时,很适用,希望对大家有用!开发M工具用滴是yEclipse 5.5.1 GA

    struts1.2下载包

    4. **创建ActionForm**:ActionForm对象用于接收和验证用户的输入,通常对应于HTML表单中的字段。 5. **设计JSP页面**:JSP页面作为视图,可以使用Struts标签库(例如`&lt;logic&gt;`、`&lt;bean&gt;`和`&lt;html&gt;`标签)来简化页面...

    structs2表单验证

    NULL 博文链接:https://zhangyulong.iteye.com/blog/851794

    structs-2.3.1.2 api

    "structs-2.3.1.2 api" 是一个特定版本的软件接口,主要用于处理结构体(structs)相关的编程任务。在编程语言中,结构体是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体,便于管理和操作...

    structs的框架验证登陆

    在Action类中,我们可以通过`ActionContext.getErrors()`来获取验证错误,并决定如何处理这些错误,比如重定向到错误页面或者再次显示登录表单。 在实际开发中,我们还需要考虑一些额外的安全措施,如密码的哈希...

    structs中JS验证类型帮助文档

    structs中JS验证类型帮助文档。希望你能看得懂~~呵呵 举个例子吧: f.entp_name.setAttribute("datatype","Require"); f.entp_name.setAttribute("msg","企业名称必须填写!"); entp_name是字段名,datatype为...

    图形报表JFreeChart应用DEMO

    本文将深入探讨如何在Eclipse环境下利用JFreeChart进行图形报表的开发,并结合Structs1.2框架进行应用实践。 首先,我们要了解JFreeChart的基本概念。JFreeChart库由David Gilbert创建,它提供了一套完整的API,...

    基于SSH的人事管理系统

    【基于SSH的人事管理系统】是一个基于轻量级架构开发的应用,该系统采用了Structs1.2作为MVC框架,Spring1.2负责依赖注入和事务管理,Hibernate3.1作为对象关系映射(ORM)工具,与SQL2000数据库进行交互。...

    仿baidu google 输入框自动完成

    "struct1.2+mysql"表明项目中可能使用了Structs 1.2框架和MySQL数据库来处理数据存储和检索。Structs是一个基于MVC模式的Java Web开发框架,而MySQL则是一种广泛应用的关系型数据库管理系统。"有完整的代码和建表...

    Struct1.2-Spring1.2-IBatis2.1.6 原创 实例

    Structs1.2版本提供了一种结构化的方式来组织和设计应用程序,通过Action和结果映射,使得请求能够有效地路由到相应的处理逻辑。它强调的是代码的清晰性和可维护性,允许开发者专注于业务逻辑,而不是底层的HTTP请求...

    structs登录验证

    "structs登录验证"是Structs框架中常见的一个功能模块,主要用于确保只有经过身份验证的用户才能访问特定的受保护资源。对于初学者来说,了解并实现这个功能是非常有价值的。 在Structs中,登录验证通常涉及到以下...

    Struts之Token解决表单那重复提交

    在处理用户交互时,尤其是表单提交,一个常见的问题是防止表单的重复提交。这可能导致数据的不一致性和其他问题。本文将深入探讨如何在Struts框架中利用Token机制来解决这个问题。 一、表单重复提交问题 表单重复...

    ssh对lob完美处理

    structs1.2 spring2.5 hibernate3.0 java web 对clob大文本 blob图像处理 这是一个完整的例子,整合了ckeidtor,servlet直接显示数据库blob图片, 注意oracle驱动ojdbc14.jar,如果是其他驱动例如ojdbc14_*g都是不...

    比较详细的SSH框架搭建教程

    比较详细的SSH框架搭建教程 Structs1.2 Spring2 Hibernate3.1

    structs2基本jar包

    6. **插件机制**:Structs2提供了一套插件机制,允许开发者轻松扩展框架功能,如表单验证、国际化、缓存管理等。 7. **Ajax支持**:通过JSON或其他数据格式,Structs2可以很好地支持异步请求和响应,适应现代Web...

    structs+Validator用户验证

    `structs+Validator`是一个常见的Go语言(Golang)框架,它允许开发者通过结构体标签(Struct Tags)来定义验证规则,从而简化和强化用户数据的验证过程。下面我们将深入探讨`structs`和`Validator`的使用方法以及...

    Struts2数据输入验证教程详解

    本教程将深入讲解Struts2中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。我们将重点讨论服务端验证,因为它在安全性方面更为可靠。 1. 服务端验证: 服务端验证主要通过重写Action类中的`...

    Structs中文文档

    4. **表单验证**:Structs 提供了内置的表单验证功能,可以在Action中定义验证规则,避免了大量重复的前端验证代码。 ### 三、框架详细介绍 1. **Action**:Action 类是处理用户请求的核心,它接收请求参数,执行...

    structs validator

    在实际开发中,`structs validator`常用于API接口的数据校验、表单验证或者数据模型的校验。它使得我们可以编写更加健壮和安全的代码,避免因为无效数据导致的程序异常。 通过使用`structs validator`,我们不仅...

    structs2 jar包

    7. **表单验证**:Structs2提供了强大的表单验证机制,可以在服务器端验证用户输入,确保数据的有效性和安全性。 8. **插件系统**:Structs2有丰富的插件库,如缓存插件、图表插件等,这些插件可以扩展框架的功能,...

Global site tag (gtag.js) - Google Analytics