- 浏览: 448987 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (162)
- easymock (3)
- 模板引擎 (3)
- JForum (4)
- web (9)
- spring (10)
- java (20)
- struts (9)
- uml (3)
- java pattern (19)
- JQuery (14)
- 多线程 (13)
- database (21)
- PS (3)
- ejb (6)
- 版本管理 svn , maven , ant (2)
- protocol (1)
- 测试 (1)
- ws (7)
- Apache (4)
- 脚本语言 (1)
- guice (1)
- 分布式 (4)
- 架构 (0)
- 经验 (1)
- 版本管理 svn (1)
- maven (1)
- ant (1)
- 书籍 (1)
- Linux (1)
最新评论
-
Master-Gao:
稍微明白了点,,有点萌萌哒
为什么匿名内部类参数必须为final类型 -
waw0931:
终于明白了,谢谢!
为什么匿名内部类参数必须为final类型 -
十三圆桌骑士:
提供了两个链接还是有用的。
安装Mondrian -
放方芳:
[flash=200,200][/flash]
Freemarker标签使用 -
放方芳:
[b][/b]
Freemarker标签使用
1.目标
在基于Struts2的应用中,利用AJAX方式提交表单实现一个登陆验证Action,将服务器端验证结果展现在页面上
字段错误展示:
action 错误提示
2.技术实现
利用struts2-jquery插件和struts2-json插件实现
3.实现步骤
3.1依赖jar包
除了struts2-core-2.2.3.jar包以外,还要下载两个jar包
struts2-jquery-plugin-3.1.0.jar
struts2-json-plugin-2.2.3.jar
3.2编写登陆处理类Action
这个Action和我们普通的Action没有任何区别
- package com.crazycoder2010.struts2;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport {
- private static final long serialVersionUID = 6627313805146336838L;
- private String name;
- private String password;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public String execute() throws Exception {
- if(!("Kevin".equals(this.name)&&"111111".equals(this.password))){
- this.addActionError("Wrong!");
- }
- return INPUT;
- }
- }
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
- <validators>
- <field name="name">
- <field-validator type="requiredstring">
- <param name="trim">true</param>
- <message>Name is required.</message>
- </field-validator>
- <field-validator type="stringlength">
- <param name="minLength">2</param>
- <param name="maxLength">60</param>
- <message>Name must be between ${minLength} and ${maxLength} characters long.</message>
- </field-validator>
- </field>
- <field name="password">
- <field-validator type="requiredstring">
- <param name="trim">true</param>
- <message>Password is required.</message>
- </field-validator>
- <field-validator type="stringlength">
- <param name="minLength">2</param>
- <param name="maxLength">60</param>
- <message>Password must be between ${minLength} and ${maxLength} characters long.</message>
- </field-validator>
- </field>
- </validators>
这个Action的配置有些特殊,注意
a.package需要继承自json-default包
b.action的拦截器引用jsonValidationWorkflowStack
c.result的type类型为json
d.配置该action需要转化成json对象的字段includeProperties
- <?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" extends="json-default">
- <action name="login" class="com.crazycoder2010.struts2.LoginAction">
- <interceptor-ref name="jsonValidationWorkflowStack"></interceptor-ref>
- <result name="input" type="json">
- <param name="ignoreHierarchy">false</param>
- <param name="includeProperties">actionErrors\[\d+\], fieldErrors\..+$, actionMessages\[\d+\]</param>
- </result>
- </action>
- </package>
- </struts>
a.将struts2-jquery的taglib引入页面中
b.在<head>元素中通过<sj:head/>标签引入jquery的css和js文件(这些文件都压缩在struts2-jquery-plugins.jar包中,因此不需要单独下载jquery相关的js了)
c.提交submit按钮改用struts2-jquery插件中的
<sj:submit onCompleteTopics="complete" --在服务器端处理完毕将结果返回到页面时所触发的javascript函数
targets="result" --用来展示结果的容器ID列表,以','分割
onBeforeTopics='clearError' --在将数据提交到服务器端以前所触发的javascript函数,如做一些客户端的验证错误提示信息的清除
返回json结果字符串示例:
{"actionErrors":[],"actionMessages":[],"fieldErrors":{"name":["Name is required."],"password":["Password
is required."]}}
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <style type="text/css">
- .errorLabel{color: red;}
- </style>
- <sj:head jquerytheme="cupertino" ajaxcache="false" compressed="false"/>
- </head>
- <body>
- <s:form action="login" method="post" theme="simple" namespace="/">
- <ul id="errorMessages"></ul>
- <p>User Name:</p>
- <p><input name="name"/><span id="error_name"></span></p>
- <p>Password:</p>
- <p><input type="password" name="password"/><span id="error_password"></span></p>
- <sj:submit
- onCompleteTopics="complete"
- targets="result"
- onBeforeTopics="clearError"
- value="Login"/>
- </s:form>
- <script type="text/javascript">
- $.subscribe('clearError', function(event,data) {
- $("#errorMessages").html("");
- $('.errorLabel').html('').removeClass('errorLabel');
- });
- $.subscribe('complete', function(event,data) {
- $("#errorMessages").html("");//先将上次认证的错误消息清除掉
- $('.errorLabel').html('').removeClass('errorLabel');
- var json = $.parseJSON(event.originalEvent.request.responseText);
- if(json.actionErrors && json.actionErrors.length>0){//判断有没有actionErrors
- $.each(json.actionErrors,function(index,data){
- $("#errorMessages").append("<li>"+data+"</li>");
- });
- return;
- }
- if(json.fieldErrors && !isEmpty(json.fieldErrors)){//判断有没有fieldError(LoginAction-validation.xml验证错误)
- $.each(json.fieldErrors,function(index,value){//index就是field的name,value就是该filed对应的错误列表,这里取第一个
- $("#error_"+index).html(value[0]);
- $("#error_"+index).addClass("errorLabel");
- });
- return;
- }
- alert("登陆成功");//既没有actionError有没有fieldError则登陆成功
- });
- function isEmpty(obj){//判断对象是否为空(处理Object obj = {}这种情况认为isEmpty=true)
- for(var p in obj){
- return false;
- }
- return true;
- }
- </script>
- </body>
发表评论
-
js this理解
2015-01-22 16:23 568http://www.jb51.net/article/162 ... -
jquery小技巧
2012-12-21 16:38 7881.怎么访问js函数里面的函数? 1.re ... -
如何写jquery插件
2012-10-16 16:06 874参考一下链接: http://www.cnblogs. ... -
js 闭包
2012-10-16 15:50 983我的博客里面已经有好几篇介绍java script closu ... -
js 方法调用
2011-10-27 17:32 1236英文原版: http://devlicio.us/blogs/ ... -
validationEngine 结合struts2 ajax验证
2011-10-26 14:36 1575项目中用到validation Engine 和 stuts2 ... -
jquery处理带有特殊字符的id
2011-10-26 14:30 7988所以id最好不要取名有 “.”、“#”、“(”、“[” ... -
struts2 json
2011-10-26 14:29 1284为了方便ajax调用传输数据,在struts2中加入的js ... -
js 闭包
2011-10-24 22:51 1224最近在网上查阅了 ... -
jquery 验证框架
2011-10-19 18:22 16070Jquery validate 验证 具体查看附件中demo ... -
javascript面向对象技术基础
2011-08-22 16:40 923看了很多介绍javascript面向对象技术的文章,很晕.为什 ... -
Javascript的匿名函数
2011-08-22 14:19 892Javascript的匿名函数 一、什么是匿名函数? ... -
JQuery原型
2011-05-23 11:20 3179在 JavaScript 中,每个函 ...
相关推荐
在这个"struts2实现服务器端校验示例"中,我们将探讨如何在Struts2中实现高效的服务器端数据校验,并结合Dojo实现类似AJAX的实时验证。 首先,Struts2的校验框架是基于Action类的,每个Action类都可以关联一个或多...
在Struts2中,可以使用`<s:fielderror>`标签显示服务器端验证错误。 3. **配置校验规则**:Struts2的校验规则可以通过XML或注解方式定义。XML方式通常在struts.xml或相应的action类配置文件中定义,而注解方式则...
Struts2负责处理业务逻辑和数据校验,而DWR则作为桥梁,实现了客户端与服务器端的实时通信。这种组合使用不仅可以确保数据的准确性,还能提升Web应用的响应速度和用户满意度。通过深入理解这两个框架的机制,开发者...
·Struts 2.0中实现表单数据校验(Validation) ·拦截器(Interceptor) ·Struts 2中实现IoC ·Struts 2中实现文件上传 ·Struts 2中的OGNL ·Strus 2的新表单标签的使用 ·Struts 2与AJAX ·Struts2分页 ...
Struts2的校验框架允许开发者定义和实施输入验证规则,这些规则可以在客户端(浏览器端)或服务器端执行。客户端验证可以提供即时反馈,而服务器端验证则是防止恶意数据的关键防线。以下是对Struts2校验框架的一些...
06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 Struts 2的...
06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新...
在Struts 2.0中实现表单数据校验(Validation) Struts 2的基石——拦截器(Interceptor) 在Struts 2中实现IoC 在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 ...
当用户提交表单时,Struts2会自动进行数据校验,如果校验失败,会将错误信息反馈给用户。 **国际化** Struts2支持多语言环境,开发者可以创建资源文件(如message.properties、message_en.properties等),存储不同...
### Struts2防止重复提交的解决方案 #### 一、引言 在Web应用程序开发中,一个常见的问题是如何有效地防止表单的重复提交。这不仅能够提高用户体验,还能增强系统的安全性。Struts2作为一款广泛使用的Java Web应用...
06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新...
- Struts2提供了一套完整的验证框架,允许开发者通过XML或注解方式定义验证规则,进行客户端和服务器端的数据校验。错误信息可以通过`<s:fielderror>`标签显示。 7. **文件上传**: - Struts2提供了内置的支持...
- Struts2提供了强大的表单验证功能,可以在Action类中定义校验规则,也可以使用XML配置文件。 10. **Ajax支持** - Struts2通过JSON结果类型和dojo插件支持Ajax请求,实现局部刷新。 通过这个压缩包中的代码示例...
8. **表单验证**:Struts2的Validation框架允许在Action类或XML文件中定义验证规则,对用户输入进行校验,保证数据的准确性。 9. ** strut2-dojo-plugin**:这个插件结合Dojo JavaScript库,为应用提供富客户端交互...
- **安装与环境搭建**:首先,你需要设置Java环境和Apache Tomcat服务器,然后通过Maven或手动方式将Struts2的依赖添加到项目中。 - **创建第一个Struts2应用**:创建一个简单的Hello World程序,了解Action类、...
默认情况下,Struts2提供了两种验证方式:服务器端验证和客户端验证。服务器端验证发生在后台,通常在Action类中,而客户端验证则在用户浏览器中通过JavaScript进行,提供了更好的用户体验,因为它可以即时反馈错误...
"在Struts 2_0中实现表单数据校验(Validation)" 介绍了Struts2的内置数据校验机制,这包括编写校验规则,使用FieldError处理错误,以及如何在视图层显示这些错误。 4. **转换器(Converter)**: "转换器...
5. **强大的表单验证(Form Validation)**:提供了基于注解或XML的验证机制,可以方便地进行客户端和服务器端的数据校验。 6. **国际化(Internationalization, i18n)**:支持多语言环境,允许开发者轻松添加新的...