`
zhengbocong
  • 浏览: 14180 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

struts的表单验证

阅读更多

ActionForm中重写父类的方法validate(),该方法会在参数传递过来后对属性的进行验证,验证不同过的时候,会根据struts-config.xml文件中的Action配置返回到input属性所指定的界面,可以使用<bean:message property=””>request范围中取出对应的错误信息提示用户

 

ActionForm中验证

 

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class HelloForm extends ActionForm {
	private static final long serialVersionUID = 1L;
	
	private String userName = null;

    public String getUserName() {
        return (this.userName);
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
   
    /**
     * 把属性重新设置为默认值
     * Reset all properties to their default values.
     */
    @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        this.userName = null;
    }

    /**
     * 用于表单验证
     */
    @Override
    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
//    	// 创建一个ActionMessage来存放错误信息
//    	ActionMessages actionMessages=new ActionMessages();
//    	/*
//    	 * 向ActionMessage存放信息
//    	 * property:为ActionMessage对象的key
//    	 * ActionMessage中key为资源文件中的key,Object为向资源文件传递的第一个参数{0}
//    	 */
//    	actionMessages.add("property",new ActionMessage("key",new Object()));
        ActionErrors errors = new ActionErrors();
        if ((userName == null) || (userName.length() < 1)){
            errors.add("username", new ActionMessage("hello.no.username.error"));
        }
        return errors;
    }
}

 

 

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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;

import com.cong.helloapp.Constants;
import com.cong.helloapp.bean.HelloForm;
import com.cong.helloapp.bean.PersonBean;

public class HelloAction extends Action {
    public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
    throws Exception {
    	// 在MessageRecourse对象中封装了对本地化的资源文件,过去要获取properties文件中的key,可以使用getMassage来获取
        MessageResources messages = getResources(request);
        messages.getMessage("hello.jsp.title");

        /*
         * 创建一个ActionMessages对象,如果userName对象为空的话,则向其中添加<String,new ActionMessage>
         * 键值对的错误信息,并转发到响应的页面
         */
        ActionMessages errors = new ActionMessages();
        String userName = (String)((HelloForm) form).getUserName();
        String badUserName = "Monster";
		if (userName.equalsIgnoreCase(badUserName)) {
			/*
			 * new ActionMessage(String key, Object value0)
			 * 	key:表示资源文件中的key值
			 * 	value0:匹配资源文件中的第一个参数,eg:{0}
			 */
			errors.add("username", new ActionMessage("hello.dont.talk.to.monster", badUserName));
			/*
			 * 将错误信息添加到request中
			 */
			saveErrors(request, errors);
			/*
			 * 返回Action中的input对应的jsp页面
			 */
			return (new ActionForward(mapping.getInput()));
		}

        PersonBean pb = new PersonBean();
        pb.setUserName(userName);
        pb.saveToPersistentStore();
        // 将PersonBean对象存放到request作用于中,通过request传递到jsp页面中
        request.setAttribute( Constants.PERSON_KEY, pb);

        // 由于在上面的代码中,将PersonBean的数据添加到了request中,所以不需要将PersonBean转发到jsp页面,所以可取消mapping的传递
        request.removeAttribute(mapping.getAttribute());
        // Forward control to the specified success URI
        return (mapping.findForward("SayHello"));
    }
}

 

struts-config.xml文件配置

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<!-- This is the Struts configuration file for the "Hello!" sample application -->
<struts-config>
	<!-- ======== Form Bean Definitions =================================== -->
	<form-beans>
		<form-bean name="HelloForm" type="com.cong.helloapp.bean.HelloForm" />
	</form-beans>
	
	<!-- ========== Action Mapping Definitions ============================== -->
	<action-mappings>
		<!-- Say Hello! -->
		<!-- 
			path:指定该请求的访问路径
			type:该请求所处理的Action
			name:指定传递给Action的ActionForm Bean
			validate:进入bean文件时是否进行验证
			input:当验证失败后返回的input界面
		 -->
		<action path="/HelloWorld" type="com.cong.helloapp.action.HelloAction"
			name="HelloForm" scope="request" validate="true" input="/hello.jsp">
			<forward name="SayHello" path="/WEB-INF/jsp/hello.jsp" />
		</action>
	</action-mappings>
	
	<!-- ========== Message Resources Definitions =========================== -->
	<message-resources parameter="com.cong.helloapp.resources.application" />
	
</struts-config>

 

web.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
	<display-name>HelloApp Struts Application</display-name>

	<!-- Standard Action Servlet Configuration -->
	<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>hello.jsp</welcome-file>
	</welcome-file-list>

	<!-- Struts Tag Library Descriptors -->
	<taglib>
		<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
	</taglib>

	<taglib>
		<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
	</taglib>

	<taglib>
		<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
	</taglib>
</web-app>

 

hello.jsp文件

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<html:html lang="true">
	<head>
		<title><bean:message key="hello.jsp.title" /></title>
		<html:base/>
	</head>
	<body bgcolor="white">
		<p>
			<h2><bean:message key="hello.jsp.page.heading" /></h2>
		<p>
			<!-- 显示指定的错误信息 -->
			<html:errors property="username" />1111<br>
			<html:errors property="a" />
			---
			<!--
				通过html:message来显示错误信息
				name:指定ActionMessage对象存放在request或者session范围内的属性key
				message:指定消息的来源,如果为true,则从request或者session中取出ActionErrors.GLOBAL_MESSAGE的ActionMessage对象
				id:对取出来的ActionMessage对象进行命名
			-->
			<html:messages id="error" message="false" >
            	<bean:write name="error" /><br>
            </html:messages>
            <!-- 显示错误信息(全部显示) -->
          	<html:errors/>
		<p>
		<logic:present name="personbean" scope="request">
			<h2>
				<bean:message key="hello.jsp.page.hello" />
				<bean:write name="personbean" property="userName" />
			</h2>
		</logic:present>
		<html:form action="/HelloWorld.do" focus="userName">
			<bean:message key="hello.jsp.prompt.person" />
			<html:text property="userName" size="16" maxlength="16" /><br>
			<html:submit />
			<html:reset />
		</html:form><br>
		<html:img page="/stauts-power.gif" alt="Powered By Struts"/>
	</body>
</html:html>

  

 

 

0
0
分享到:
评论

相关推荐

    关于struts表单验证

    在Struts框架中,表单验证是一个关键环节,确保从用户端接收到的数据准确无误,符合应用的要求。本文将详细讲解Struts中的表单验证机制,包括ActionForm Bean的使用、validate()方法和reset()方法,以及如何处理验证...

    struts表单验证讲解视频教程

    一、Struts表单验证概述 在Struts中,表单验证通常是通过ActionForm对象来实现的。ActionForm是业务逻辑层和表现层之间的桥梁,用于收集和验证用户输入的数据。当用户提交表单时,这些数据会被封装到ActionForm对象...

    Struts 表单验证 实例

    #### 二、Struts表单验证概述 Struts框架为Web应用程序提供了丰富的功能支持,其中包括强大的表单验证机制。通过自定义`ActionForm`类和重写`validate()`方法,开发者可以轻松实现对用户输入数据的有效性检查。 ##...

    struts表单验证

    在Struts中,表单验证是确保用户输入数据准确、合法的关键环节。本篇文章将详细探讨如何在Struts中实现表单验证,且不依赖于Struts的自定义标签。 1. **基础概念** - **ActionForm**: Struts的核心组件之一,用于...

    Struts动态表单验证

    Struts动态表单验证是Java Web开发中一个关键的实践,尤其在构建MVC(Model-View-Controller)架构的应用程序时。Struts框架提供了一种有效的方法来处理用户输入并确保数据的完整性和安全性。在这个主题中,我们将...

    Struts2表单验证

    本文将深入探讨Struts2的表单验证机制。 首先,Struts2的输入验证分为两种方式:手动验证和使用验证框架。 **手动验证**主要包括两种方法: 1. **重写validate()方法**:这是最基础的方式,所有Action类都需要继承...

    struts2官方例子7-表单验证 xml形式的验证

    在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例主要讲解的是使用XML文件进行表单验证的方法。 首先,让我们理解表单验证的基本...

    关于struts框架的一个很好的表单验证

    对于压缩包内的“表单验证”文件,可能包含了具体的JavaScript验证代码示例,以及可能的Struts ActionForm验证配置,可以作为学习和实践Struts表单验证的参考资料。 总结来说,Struts框架的表单验证是保证Web应用...

    Struts2极速表单验证框架(注解)

    在Struts2中,表单验证是确保用户输入数据准确性和完整性的关键部分。本篇将详细介绍Struts2的极速表单验证框架,特别是其注解方式的使用。 ### 1. 表单验证的重要性 在Web应用程序中,验证用户输入的数据是必不可...

    struts结合js的表单验证

    ### Struts 结合 JS 的表单验证 在 Web 开发中,前端表单验证是非常重要的一个环节,它能够有效提高用户体验并减少服务器端的压力。本文将详细介绍如何在 Struts2 框架中利用 JavaScript(JS)进行客户端表单验证,...

    struts2 表单验证验证信息显示位置及效果

    这篇博客文章“Struts2 表单验证验证信息显示位置及效果”探讨了如何有效地实现和展示Struts2中的表单验证信息。 首先,Struts2提供了一种灵活的验证机制,包括Action级别的校验和ValidatorForm级别的校验。Action...

    struts2 表单验证 注册

    在Struts2中,表单验证是一个重要的功能,它确保了用户输入的数据符合我们设定的规则,从而提高应用程序的健壮性和用户体验。在注册场景中,表单验证尤为重要,因为它涉及到用户账户的安全性。 首先,让我们深入...

    stuts表单验证。还成吧

    #### 二、Struts表单验证的重要性 在Web应用中,数据的有效性检查是非常重要的环节之一。通过合理的验证机制,可以有效防止非法数据的提交,从而提高系统的安全性和稳定性。Struts框架提供了强大的表单验证功能,...

    Struts动态表单验证Demo视频

    在Struts框架中,动态表单验证是一个关键特性,用于确保用户输入的数据符合业务规则,从而提高应用的安全性和用户体验。 动态表单验证指的是在运行时根据业务需求动态地生成验证规则,而不是静态地硬编码在程序中。...

    struts2表单验证

    在Struts2中,表单验证是处理用户输入数据的重要部分,确保数据的完整性和正确性。下面将详细讨论Struts2中的表单验证及其相关知识点。 一、Struts2表单验证概述 Struts2的表单验证分为客户端验证和服务器端验证。...

    整合了struts2 jquery的formValidator表单验证的页面代码

    在"整合了struts2 jquery的formValidator表单验证的页面代码"这个项目中,开发者可能采用了以下步骤: 1. **引入依赖**:首先,需要在HTML页面中引入Struts2的相关JSP标签库,同时引入jQuery库和formValidator的...

    struts2验证框架示例

    这里,我们启用了Validation拦截器,并排除了一些不需验证的方法,如“input”表示用户重新提交表单时不需要再次验证。 在视图层,Struts2提供了一种方便的方式来展示这些验证错误。你可以使用OGNL(Object-Graph ...

    Struts1.2动态表单注册 验证实例(2)

    然后,将ActionForm指向我们的UserBean,这样当用户提交表单时,Struts会自动调用Validator进行验证。 在JSP页面中,我们可以使用Struts标签库来展示错误消息,例如`&lt;html:errors&gt;`标签,它会显示所有验证失败的...

    struts 1.2 ActionFrom表单验证

    总的来说,深入理解Struts 1.2的ActionForm表单验证机制,以及它与Spring框架的集成,将有助于提升你在Java Web开发领域的专业技能。这包括熟悉MVC模式、客户端与服务器端验证策略、Struts配置文件、Spring的依赖...

Global site tag (gtag.js) - Google Analytics