在web应用经常需要要对用户提交的表单进行验证
webwork有3种验证方式:
客户端验证
服务器端验证
Ajax验证:
下面来探讨最简单的服务器端验证
webwork通过实现com.opensymphony.xwork.Validateable 和 com.opensymphony.xwork.ValidationAware接口提供验证功能,通常我们不会自己去实现这两个接口,而是通过继承com.opensymphony.xwork.ActionSupport这个类。
来看我们Action的变化
java 代码
package mypackage;
import java.util.Map;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.Validateable;
public class SimpleAction extends ActionSupport implements Validateable {
private User user = new User();
public String execute() throws Exception {
ActionContext context = ActionContext.getContext();
Map session = context.getSession();
session.put("user", user);
user.getMessage().add("msg1");
user.getMessage().add("msg2");
user.getMessage().add("msg3");
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void validate() {
if("java".equals(user.getUsername())){
this.addFieldError("username", "username can't become java");
}
}
}
如果我们的用户名为 java 的话就向客户端发送一段失败警告:
其中的addFieldError方法是从ActionSupport继承来的,第一个参数表示的是域(field)名,第二个参数表示的是出错信息.
一件奇怪的事是execute方法并没有显示调用validate方法,validate方法怎么运行,它总不可能自动运行吧
答案是通过拦截器
我们的xwork.xml将作如下变化:
xml 代码
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<action name="simple" class="mypackage.SimpleAction">
<result name="success" type="redirect">success.jsp</result>
<result name="input">index.jsp</result>
<interceptor-ref name="params" />
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</action>
</package>
</xwork>
新增两个拦截器 validation 和 workflow,第一个拦截器增加了验证的功能,第二个拦截器会改变action拦截器的运行顺序,具体是:先执行 validate()方法,让后调用hasFieldErrors()方法检查是否有错误,如果有直接返回input,而不再执行余下的action.
index.jsp将会做如下变化
xml 代码
<%@taglib prefix="ww" uri="/webwork" %>
<html>
<body>
<div style="color: red"><ww:fielderror />div>
<form action="simple.action">
<input type="text" name="user.username"><br>
<input type="password" name="user.password"><br>
<input type="submit" value="submit">
form>
body>
html>
增加一个捕获错误的标签:
<ww:fielderror />
其余部分都不会变化
效果图:
分享到:
相关推荐
WebWork验证框架是一种用于Java Web应用的验证工具,它整合在XWork核心库中,主要目的是在Action执行前对用户输入的数据进行有效性检查。WebWork验证框架提供了多种灵活且强大的特性,使得数据验证过程变得更加简单...
在"webwork-register"这个项目中,WebWork可能用于处理用户注册过程中的各种操作,如表单提交、数据验证和业务逻辑处理。 Spring框架是一个全面的企业级应用开发框架,它不仅提供了IoC(控制反转)和AOP(面向切面...
Webwork 是一个基于Java的MVC(模型-视图-...通过分析和运行这些文件,你可以更深入地了解Webwork验证的实现细节,并动手实践如何设置和调试验证规则。这将有助于提升你在Webwork框架下进行数据验证的实际操作能力。
WebWork登录逻辑验证是任何Web应用程序中的关键部分,它确保只有合法用户能够访问受保护的资源。 在WebWork中,登录过程通常涉及到以下几个步骤: 1. **请求处理**:当用户尝试登录时,他们通常会填写包含用户名和...
Struts2框架内置了一套强大的验证系统,它基于WebWork验证框架进行扩展和优化。该验证系统支持前端和后端验证,并且可以通过XML配置文件或注解的方式定义验证规则。下面将具体介绍如何在Struts2中配置和使用验证规则...
WebWork是一个流行的Java Web框架,它提供了强大的动作框架和验证机制。然而,在实际应用中,有时可能会遇到一个问题,即客户端验证提示信息会重复多次显示,这不仅影响用户体验,也可能暴露出潜在的代码问题。本文...
8. **插件系统**:WebWork支持插件扩展,开发者可以方便地添加自定义功能,如验证、缓存管理等。 9. **配置管理**:WebWork的配置文件(如struts-config.xml)用于定义动作、结果、数据源等,这使得配置信息集中...
WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...
2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...
WebWork内置了强大的验证框架,可以轻松地为Action添加验证逻辑。例如,为用户注册功能添加验证规则,确保提交的数据符合预期格式。 #### XWork配置详述 XWork是WebWork的基础,其配置文件`xwork.xml`定义了Action...
3. Interceptors(拦截器):拦截器是WebWork2.0的一个强大功能,允许在Action调用前后插入自定义逻辑,如权限验证、日志记录等。 二、WebWork2.0主要特性 1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定...
当表单提交时,WebWork会针对每个字段执行验证。相反,Model-Driven Action将整个对象模型作为操作单位,模型对象包含所有相关属性,这样可以实现更复杂的数据关联验证。 **ActionContext(Action上下文)** ...
6. **请求参数(Parameters)**:WebWork提供了多种方式处理请求参数,包括自动类型转换、参数验证和安全防护。理解参数绑定机制有助于构建健壮的Web应用。 7. **视图技术**:WebWork可以与多种视图技术集成,如JSP...
3. **拦截器(Interceptors)**:WebWork 使用拦截器来执行一些预处理或后处理任务,如权限验证、日志记录等。拦截器可以在Action执行前后插入自定义逻辑,增强了系统功能的灵活性。 4. **异常处理**:WebWork 提供...
`Interceptor`是WebWork中的另一个关键概念,它允许在Action执行前后插入自定义逻辑,例如验证、日志记录、性能监控等。 WebWork的类型转换功能是其一大亮点,它可以自动将HTTP请求参数转换为Action类的属性类型,...
Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...
3. **Interceptors(拦截器)**:WebWork2引入了拦截器的概念,它们在Action执行前后执行,可以用于日志记录、事务管理、权限验证等。拦截器的使用使得代码更易于组织和复用。 4. **动态方法调用(Dynamic Method ...
WebWork的拦截器(Interceptor)框架和验证框架也是教程的重要内容,它们允许开发者在运行时添加额外的行为和验证逻辑。 WebWork还强调了与其他开源项目集成的能力,如Spring、Hibernate和Xml-RPC。这些集成让...