Struts2框架
表单提交 --> 类型转换--> 输入校验
1.在类型转换的时候出现不能转换时,会跳转到<result name="input">所配的页面中。
错误信息的配置:
a.全局配置:资源文件中配入如下代码:
xwork.default.invalid.fieldvalue={0} error
b.局部配置:Action类名.properties
invalid.fieldvalue.userName=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
invalid.fieldvalue.age=\u5E74\u9F84\u5FC5\u987B\u662F\u6570\u5B57
invalid.fieldvalue.birthday=\u751F\u65E5\u7684\u683C\u5F0F\u4E3A\uFF1A\u5E74-\u6708-\u65E5
2.在validate方法中对输入进行输入校验,如果一个类配了多个action的,那么在“validate + Action方法名”方法进行输入校验。
调用顺序是先调用“validate + Action方法名”方法,再调用validate方法
一、Action类
package com.tao.struts2.action;
import java.util.Calendar;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ValidateAction extends ActionSupport {
private String userName;
private int age;
private Date birthday;
public String valis() throws Exception {
return SUCCESS;
}
public void validateValis() {
if (userName == null || this.userName.trim().equals("")
|| this.userName.trim().length() > 16
|| this.userName.trim().length() < 6) {
this.addFieldError("userName",
"userName required! and length is 6-10!");
}
if (age == 0 || age > 150 || age < 1) {
this.addFieldError("age", "age required 1-150!");
}
if (birthday == null || Calendar.getInstance().before(birthday)) {
this.addFieldError("birthday", "birhtday required before now!");
}
System.out.println("=======validateValis=======");
}
@Override
public void validate() {
super.validate();
System.out.println("=======validate=======");
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/user" extends="struts-default">
<action name="valis" class="com.tao.struts2.action.ValidateAction"
method="valis">
<result name="input">/valis/register.jsp</result>
<result name="success">/valis/success.jsp</result>
</action>
</package>
</struts>
二、页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Login</title>
</head>
<body>
<s:actionerror/>
<form action="${pageContext.request.contextPath }/user/valis.action" method="post">
${errors.userName }
名字: <input name="userName" type="text" /><br />
${errors.age }
年龄: <input name="age" type="text" /><br />
${errors.birthday }
生日: <input name="birthday" type="text" /><br />
<input type="submit" value="提交" />
</form>
<span style="background:red;">
</span>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>success</title>
</head>
<body>
success
</body>
</html>
分享到:
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
- 深入理解Struts2的源码,特别是`ValidationInterceptor`和`Validator`类,可以帮助我们更好地掌握输入校验的工作原理和优化方法。 8. **示例实践** - `src`目录可能包含了示例代码,展示了如何在Action类中使用...
Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...
此外,对于更复杂的校验规则,Struts2允许开发者通过覆盖Action类中的`validate()`方法或创建特定的`validateXxx()`方法来实现自定义校验。 在Struts2中,输入校验的流程如下: 1. 类型转换器:Struts2将接收到的...
Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:使用Action中的`validate()`方法和使用XML文件。 1. 使用Action中的`validate()`方法: 在Struts2中,每个Action类都可以包含一个名为`...
在Struts2中,我们可以通过实现`validate()`方法或者使用Validation XML文件来定义验证规则。 在Struts2中,输入验证是通过Interceptor(拦截器)实现的。Interceptor是Struts2的核心特性之一,它们按预定义的顺序...
当用户提交表单时,Struts2会调用`validate`方法进行校验。如果校验失败,Struts2会自动重定向到`input`视图(即`register.jsp`),并在页面上显示错误信息(通过`s:fielderror`标签)。 6. **struts.xml配置**: ...
4.Struts2_03_TypeConverter3 把上面的局部的转换器改成全局的了 xwork-conversion.properties 5.Struts2_03_TypeConverter4 把前面的继承改成了strutstypeconverter了 6.Struts2_03_TypeConverter5 扩展...
如果业务逻辑方法没有指定的验证方法,Struts2会尝试使用`validate()`方法进行校验。 当需要避免`validate()`方法执行时,有两种策略: - 不重写`validate()`方法,但这会导致`execute()`方法无法被校验。 - 添加一...
Struts2作为一款流行的Java Web框架,其在处理用户输入数据和实现多语言支持方面具有强大的功能。在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及...
4.Struts2_03_TypeConverter3 把上面的局部的转换器改成全局的了 xwork-conversion.properties 5.Struts2_03_TypeConverter4 把前面的继承改成了strutstypeconverter了 6.Struts2_03_TypeConverter5 扩展...
4.Struts2_03_TypeConverter3 把上面的局部的转换器改成全局的了 xwork-conversion.properties 5.Struts2_03_TypeConverter4 把前面的继承改成了strutstypeconverter了 6.Struts2_03_TypeConverter5 扩展...
4.Struts2_03_TypeConverter3 把上面的局部的转换器改成全局的了 xwork-conversion.properties 5.Struts2_03_TypeConverter4 把前面的继承改成了strutstypeconverter了 6.Struts2_03_TypeConverter5 扩展...
然后在自定义校验器中重写`validate()`方法,实现具体的校验逻辑。 3. **配置自定义校验器** 配置自定义校验器有两种方式: - XML配置:在`struts.xml`或相应的Action配置文件中,使用`<validators>`标签定义...
总的来说,Struts2提供了灵活且强大的数据校验机制,无论是在XML配置文件中定义,还是利用注解,甚至自定义校验逻辑,都能有效地保证Action中各个方法的输入数据合法,从而提高应用程序的稳定性和安全性。...