`

Struts2_action_validate_simpleTest

阅读更多
    昨晚很晚才完成了struts2.0简单数据验证,没时间写到博客里就已经累的不行了!今天过来又练习了一遍,发现自己还是基本掌握了(只是皮毛中的皮毛)!

注意:在查看webwork技术文档时发现其中一句话是这样写的,在action类中如果没有属性getter方法,则:在验证失败之后(或者直接是addFieldError()返回的错误),在用户输入页面无法得到刚才的值,这是很不友好的方式,不可能因为用户一个输入框的数据不规范,就清除了用户所有的数据!所以,一定要保留getter方法。(不过,password类型的文本框就是多给一个getter也不可能有值的!开玩笑
    直接代码说话了,以下是控制器action的代码:
import com.opensymphony.xwork2.ActionSupport;

public class UserCaseAction extends ActionSupport
{

	private static final long serialVersionUID = 1L;

	private String userName;

	private String password;

	public String getUserName()
	{
		return userName;
	}

	public void setUserName(String userName)
	{
		this.userName = userName;
	}

	public String getPassword()
	{
		return password;
	}

	public void setPassword(String password)
	{
		this.password = password;
	}

	public UserCaseAction(String userName, String password)
	{
		super();
		this.userName = userName;
		this.password = password;
	}

	public UserCaseAction()
	{
		super();
	}

	public String login()
	{
		//依照网上的做法,让线程休眠500毫秒,然后查看timer拦截器在控制台的输出结果
		try
		{
			Thread.sleep(500);
		}
		catch(InterruptedException e)
		{
			e.printStackTrace();
		}
		if ("Harry".equals(this.getUserName().trim()) 
&& "Harry".equals(this.getPassword().trim()))
		{
			//注意:此处的result在转发到的页面中可以访问其值!
			this.addFieldError("userName", "Login success ! !");
			return "input";
		}
		else
		{
			this.addFieldError("userName", "Login failure");
			return "input";
		}
	}

	@Override
	/**
	 * 验证数据的方法--已重写
	 */
	public void validate()
	{
		if (null == this.getUserName() 
                || "".equals(this.getUserName().trim()))
		{
			this.addFieldError("userName", 
                         "Username is required ! !");
		}
		if (null == this.getPassword()
                || "".equals(this.getPassword().trim()))
		{
			this.addFieldError("password", 
                          "Password is required ! !");
		}
	}

}


----配置文件大同小异,不需要贴出来了,否则高手要喷饭了!

JSP页面代码:
<s:form action="userCase">
			<s:textfield name="userName" label="UserName"></s:textfield>
			<s:password name="password" label="Password"></s:password>
			<s:submit value="Login" method="login"></s:submit>
		</s:form>



OK,到此为止就基本上可以用了,当我访问时,会出现附件中的页面,经过几番捣乱,就可以体会到validate的作用了!


注意:在初次使用struts2标签时,发现访问以上的JSP页面,居然会给我报出一个action未找到%$#@?*&^的异常,异常信息具体是:
The Struts dispatcher cannot be found.
This is usually caused by using Struts tags without the associated filter.
Struts tags are only usable when the request has passed through its servlet filter,
which initializes the Struts dispatcher needed for this tag. 
- [unknown location]

郁闷至极,终于发现:原来是自己在web.xml文件中关于struts2框架的filter配置中有问题,直接访问JSP页面,无法经过该filter中的url-pattern,所以,需要重新修改一下web.xml文件中的内容。
<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>


以上就这些了!!!




另外,再啰嗦几句,当我的Action中不是只有一个乖巧的唯一的宝贝execute方法,而是有很多山寨自定义方法时,如何调用呢?
在JSP页面中,表单提交地址可以写成
<form action="userCase!login.action" method="post">

但是在struts标签使用之后,需要按照这样的方式:
<s:form action="userCase">
    <s:submit value="Login" method="login"/>
</s:form>



。。。。修炼内功。。。。。
  • 大小: 6.9 KB
  • 大小: 14.6 KB
分享到:
评论
1 楼 背着家走 2012-06-29  
很严谨,叙述很清晰!

相关推荐

    Validate_code.rar_struts valida_struts valida_struts validate_v

    2. **ValidatorForm**:继承自Struts的`org.apache.struts.action.ActionForm`类,用于封装请求参数并进行验证。 3. **ValidatorRules**:在运行时读取`Validation.xml`文件并生成验证规则的对象。 4. **...

    Struts2_validate_6_8.rar_Java 8

    在"Struts2_validate_6_8.rar"这个压缩包中,我们很显然会找到与Struts2数据验证相关的资源,特别是针对Java 8的实现。 数据验证在任何Web应用中都是至关重要的,因为它能防止恶意数据的注入,保护数据库免受破坏,...

    Struts(二)List_Map_LookupDispatchAction_Validate

    2. **Validate**: 在Struts中,验证是非常重要的部分,它确保用户输入的数据符合业务规则,防止无效数据进入系统。Struts提供了一种基于配置的验证机制,即在Action类中定义validate()方法,用于检查用户提交的表单...

    struts2入门实例2 经典入门必备

    10.Struts2_04_validate_method ????????????? validateXXX方法校验得到的错误信息先显示出来,然后才是validate方法校验的字段错误信息 validate方法在validateXXX方法被调用后,依然会被调用 ...

    struts2入门实例1

    10.Struts2_04_validate_method ????????????? validateXXX方法校验得到的错误信息先显示出来,然后才是validate方法校验的字段错误信息 validate方法在validateXXX方法被调用后,依然会被调用 ...

    struts2入门实例3 经典入门必备

    10.Struts2_04_validate_method ????????????? validateXXX方法校验得到的错误信息先显示出来,然后才是validate方法校验的字段错误信息 validate方法在validateXXX方法被调用后,依然会被调用 ...

    struts2入门实例4 经典入门必备

    10.Struts2_04_validate_method ????????????? validateXXX方法校验得到的错误信息先显示出来,然后才是validate方法校验的字段错误信息 validate方法在validateXXX方法被调用后,依然会被调用 ...

    Struts2_1100_SimpleDataValiation

    这个压缩包文件"Struts2_1100_SimpleDataValiation"可能包含了关于Struts2数据验证方面的内容,特别是简单数据验证的实现。下面我们将深入探讨Struts2的数据验证机制及其相关知识点。 1. **Struts2 数据验证**: -...

    struts2_hibernate

    以上就是"struts2_hibernate"项目中涉及的关键知识点,这个项目不仅涵盖了Web开发的基本流程,也体现了Struts2和Hibernate框架在实际应用中的融合与优势。通过深入学习和实践,开发者可以更好地理解和掌握Java Web...

    ajax_struts2_上传与下载_无刷新

    3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹下的测试压缩包upload.rar上传到服务器的临时目录,然后利用WinRar....

    达内培训机密资料_struts2_day05(3)

    - **使用Action级验证**:在Action类中实现`validate()`方法来进行验证。 - **使用拦截器**:通过自定义拦截器进行验证。 #### 5. **文件上传** Struts2支持文件上传功能,主要步骤如下: - 在配置文件中启用文件...

    struts2.0_apidocs

    7. **Validation框架**:Struts2提供了内置的验证框架,可以在ActionSupport类的validate()方法内编写验证逻辑,或者使用XML文件定义验证规则。 8. **Tiles插件**:Struts2整合了Tiles框架,允许开发者创建可重用的...

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    6. 数据验证:Struts2提供了两种验证方式,即validate方法验证和validateXXX方法验证。还可以通过验证框架实现前台验证和自定义验证规则。 7. 转换器:用于处理数据类型转换的问题。Struts2提供了基于OGNL和Struts...

    mysql 安装密码校验插件validate_password.docx

    以下是安装validate_password插件的详细步骤,以及相关的配置和使用方法。 1. **修改配置文件** 首先,你需要编辑MySQL的配置文件,通常位于`/etc/my.cnf`(根据你的操作系统和安装路径可能有所不同)。使用命令`...

    struts2_validation

    Struts2提供了一些基于XWork Validation Framework的内建验证程序,它们大大简化了输入验证工作。 使用这些验证程序不需要编程,程序员只需要在一个XML文件里对验证程序应该如何工作做出声明就行了。需要声明的内容...

    Struts2的validate验证框架

    这个validate验证框架中的actiionerror级别的错误的验证提示,并包含了如何在一个Action中处理多个业务逻辑,(struts1.x 中的DispatcheAction),例子比较简单,希望对大家学习struts有所帮助。

    达内培训机密资料_struts2_day03(2)

    - 属性注入是Struts2中的一个重要特性,它允许通过配置文件直接将值注入到Action类的属性中,简化了Action类的编写。 ```xml &lt;action name="user_login" class="com.example.UserAction"&gt; ...

    struts2_token控制刷新重复提交

    3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_7_数据验证 共56页.pptx

    ### Java Struts2 数据验证详解 #### 课程背景与目标 在进行Java软件开发时,Struts2作为一款流行的Web应用程序框架,其丰富的功能和灵活的配置方式深受开发者喜爱。本教程旨在帮助初学者和有一定经验的开发者深入...

Global site tag (gtag.js) - Google Analytics