- 浏览: 167683 次
- 性别:
- 来自: 天堂
-
最新评论
-
woodpeckerboy:
您好 。我这边也遇到了这种怪问题 。也是按照你说的那样导入ja ...
JSTL http://java.sun.com/jsp/jstl/core -
henuhaigang:
[color=darkred]jk[size=x-small] ...
AJAX学习之序列二:struts2 jquery json 实现AJAX 注册ID验证 -
king_jw:
不错,学习了
Web Service学习,用于web service实现的两个主要的框架axis和xfire. -
Mr0o0rM:
顶顶顶顶顶顶
SOAP -
tengfeineu:
...
AJAX学习之序列二:struts2 jquery json 实现AJAX 注册ID验证
http://blog.csdn.net/abing37/archive/2009/12/01/4916751.aspx
1. 目标
目标使用 AJAX 实现如下效果:
当填入用户名的时候,光标移开进行 AJAX 验证,如果已经被注册提示如下:
如果可以使用,提示如下:
2. 实现过程
准备: jquery , struts2 ,开发工具等这种环境问题不累述,大家自己准备。
主要工作如下
1. 开发 CheckMemberIdAction:
package com.contentsearch.action;
import com.opensymphony.xwork2.ActionSupport;
public class CheckMemberIdAction extends ActionSupport {
private String isMemberIdUsed;
private String memberid;
public String getMemberid() {
return memberid;
}
public void setMemberid(String memberid) {
this.memberid = memberid;
}
public String getIsMemberIdUsed() {
return isMemberIdUsed;
}
public void setIsMemberIdUsed(String isMemberIdUsed) {
this.isMemberIdUsed = isMemberIdUsed;
}
// 处理用户请求的 execute 方法
public String execute() throws Exception {
if ("sky".equals(memberid)) {
this.setIsMemberIdUsed("yes");
} else {
this.setIsMemberIdUsed("no");
}
return SUCCESS;
}
}
2: 开发 Member Pojo
package com.contentsearch.dao.pojo;
public class Member {
private long id;
private String memberid;
private String name;
private String pass;
private String email;
private String gender;
private String birthday;
public String getMemberid() {
return memberid;
}
public void setMemberid(String memberid) {
this.memberid = memberid;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
3. 配置 Struts.xml
<?xml version="1.0" encoding="GBK"?>
<!-- 指定 Struts 2 配置文件的 DTD 信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts 是 Struts 2 配置文件的根元素 -->
<struts>
<!-- Struts 2 的 Action 必须放在指定的包空间下定义 -->
<package name="strutsqs" extends="struts-default">
<!-- 定义 login 的 Action, 该 Action 的实现类为 lee.Action 类 -->
<action name="Login" class="com.contentsearch.action.LoginAction">
<!-- 定义处理结果和资源之间映射关系。 -->
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
<package name="strutsjson" extends="json-default" >
<action name="CheckMemberId" class="com.contentsearch.action. CheckMemberIdAction" >
<result type="json" />
</action>
</package>
<constant name="struts.objectFactory" value="spring" />
</struts>
4. 开发 register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link type="text/css" href="css/jquery-ui-1.7.custom.css"
rel="stylesheet" />
<style type="text/css">
body {
font: 62.5% "Trebuchet MS", sans-serif;
margin: 50px;
}
.demo {
align: center;
border: 1px solid #CA8EFF;
width: 500px;
height: 400px;
padding: 10px;
float: center;
background: #E0E0E0;
}
</style>
<script src="js/jQuery/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
ClearErrorInfo();
$("#loginSubmit").click(function() {
ClearErrorInfo();
var flag=true;
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
if($.trim($("#memberid").val())==""){
$("#memberIdError").html("<font color='red'> 用户名不能为空! </font>");
flag=false;
}
if($.trim($("#username").val())==""){
$("#userNameError").html("<font color='red'> 姓名不能为空! </font>");
flag=false;
}
if($.trim($("#memberpass").val())==""){
$("#passError").html("<font color='red'> 密码不能为空! </font>");
flag=false;
}else{
if($.trim($("#memberpass").val())!=$.trim($("#memberpass2").val())){
$("#passError2").html("<font color='red'> 两次密码不一致! </font>");
flag=false;
}
}
if($.trim($("#gender").val())==""){
$("#genderError").html("<font color='red'> 性别不能为空! </font>");
flag=false;
}
var email=$.trim($("#email").val());
if(email==""){
$("#emailError").html("<font color='red'> 电子邮箱不能为空! </font>");
flag=false;
}else{
var isOk=reg.test(email);
if(!isOk){
$("#emailError").html("<font color='red'> 电子邮箱格式不正确! </font>");
}
}
if($.trim($("#birthday").val())==""){
$("#birthdayError").html("<font color='red'> 出生日期不能为空! </font>");
flag=false;
}
return flag;
});
$("#memberid").blur(function() {
$.post("CheckMemberId", { memberid:$("#memberid").val()},
function (data, textStatus){
if(data.isMemberIdUsed=="yes"){
$("#memberIdError").html("<font color='red'> 用户名已经被注册,请重新选择一个! </font>");
}
}, "json");
});
function ClearErrorInfo(){
$("#memberIdError").html("");
$("#userNameError").html("");
$("#passError").html("");
$("#passError2").html("");
$("#genderError").html("");
$("#emailError").html("");
$("#birthdayError").html("");
}
});
</script>
</head>
<body>
<div class="demo"><!-- 提交请求参数的表单 --> <s:form action="Register"
name="userform">
<table align="center">
<caption>
<h3> 会员注册 </h3>
</caption>
<tr>
<!-- 用户名的表单域 -->
<td> 用户名: </td>
<td><input type="text" name="member.memberid" value="" id="memberid"/><span id="memberidError"></span><span id="memberIdError"></span></td>
</tr>
<tr>
<!-- 用户名的表单域 -->
<td> 真实姓名: </td>
<td><input type="text" name="member.name" value="" id="username"/><span id="userNameError"></span></td>
</tr>
<tr>
<!-- 密码的表单域 -->
<td> 密码: </td>
<td><input type="password" name="member.pass" value="" id="memberpass"/><span id="passError"></span></td>
</tr>
<tr>
<!-- 密码的表单域 -->
<td> 再次密码: </td>
&l
评论
[*]
align]
发表评论
-
struts2 使用之我见
2010-01-12 11:52 70struts2 使用之我见 Struts2 是一个相当强 ... -
MySQL查询优化系列讲座之查询优化器
2010-01-07 00:33 310MySQL查询优化系列讲座之查询优化器 当你提交一个查询的时 ... -
MySQL 命令行
2010-01-07 00:26 84MySQL 命令行 第一招、mysql服务的启动和停止 ... -
MySQL中SQL优化和架构设计的一些简单想法
2010-01-06 17:34 395MySQL中SQL优化和架构设计的一些简单想法普通MySQL运 ... -
我的mysql 优化日记
2010-01-06 17:24 1089同时在线访问量继续 ... -
mysql优化
2010-01-06 17:00 990在整体的系统运行过程 ... -
我也谈谈JAVA并发程序设计的现状和前景
2010-01-06 12:07 1306最近我也是在涉及并发J ... -
SVN配置
2010-01-05 23:12 1044在大学期间为了配这个S ... -
Easy Ajax with jQuery
2009-12-25 01:00 1105Ajax is changing web applicatio ... -
Use jquery remote validation with struts2
2009-12-25 00:00 164I feel that jquery’s vali ... -
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
2009-12-24 17:53 1259http://www.jdon.com//mda/ddd.ht ... -
面向对象与领域建模
2009-12-24 17:36 840多变且复杂的需求 ... -
How to Write an Effective Design Document
2009-12-24 17:00 1280http://blog.slickedit.com/2007/ ... -
已经会struts1.x了为何还要学习struts2呢
2009-12-24 15:44 969一、首先,一个新版本的程序是为了解决老版本的一些bug而出世. ... -
如何写一个好的需求文档
2009-12-24 11:01 10081、从用户角度的编写 ... -
MRD
2009-12-24 10:59 882MRD ... -
软件开发从文档做起
2009-12-24 10:52 756说起文档,首先我从即 ... -
设计与开发的五条原则–六年真谛
2009-12-24 10:47 738这篇文章发表于我的博 ... -
接口开发及技术负责人的职责随笔
2009-12-24 10:35 2102对于网站或者平台,大 ... -
struts2.1两天快速入门
2009-12-24 10:26 1277第一天上午学习目录列表: 一、第一个 ...
相关推荐
"Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...
总结来说,通过这种方式,我们可以利用AJAX向Struts2 Action传递JSON数组,实现异步数据交互。这在动态更新页面内容、处理表单提交等场景下非常有用。同时,使用JSON作为数据交换格式,使得前后端的数据交换变得更加...
在IT行业中,jQuery、AJAX、JSON以及Struts2是四个非常重要的技术,它们在Web开发领域中扮演着核心角色。下面将详细解释这些技术及其相互间的集成。 **jQuery** 是一个快速、简洁的JavaScript库,它简化了HTML文档...
总的来说,Struts2JQueryJson项目是关于如何在Struts2框架下结合JQuery处理JSON数据的一个实战案例,涵盖了前端与后台的交互、数据的序列化和反序列化、以及前端动态渲染等内容。通过学习这个项目,开发者可以深入...
### Struts2、JSON与jQuery实现Ajax登录与注册功能详解 在现代Web开发中,实现高效、实时的用户交互已成为核心需求之一。Struts2框架以其强大的MVC架构能力,结合JSON数据交换标准以及jQuery库的灵活性,为构建动态...
1. 配置Struts2:首先,需要在Struts2的配置文件(struts.xml)中配置Action,指定返回JSON类型的结果。这通常通过在Action类的方法上添加注解`@Result(type="json")`或在XML配置中定义一个JSON结果类型来实现。 2. ...
结合这三个组件,开发者可以构建出响应式、动态的Web应用,后端使用Struts 2处理业务逻辑,通过JSON Plugin返回JSON数据,前端利用jQuery通过AJAX请求获取这些数据,然后动态更新页面,提高用户体验。这种前后端分离...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...
在Web开发中,jQuery、Struts2、Ajax和JSON是常见的技术组合,它们协同工作以实现动态、异步的数据交互。本示例将探讨如何利用jQuery的Ajax功能向Struts2框架发送请求,并以JSON格式接收响应数据。下面我们将详细...
客户端通常使用JavaScript或Ajax来处理JSON响应,例如使用jQuery的`$.ajax`或`fetch` API。可以解析JSON数据并动态更新页面内容。 9. **最佳实践**: - 尽量减少在JSON中传递的数据量,避免不必要的性能开销。 -...
在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery库之间交换JSON格式的数据。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,...
总的来说,结合Struts2、jQuery、ajax和MySQL,我们可以实现高效、流畅的省市二级联动效果,提供用户友好的Web界面。这四个技术的协同工作展示了现代Web开发中前后端交互的基本模式,对于任何想要学习Web开发的人来...
在这个简单的Ajax例子中,我们将探讨如何整合Struts2和jQuery来实现页面无刷新的数据更新。 首先,我们需要在项目中引入Struts2和jQuery的相关依赖。Struts2通常通过Maven或Gradle添加依赖库,包括核心库、struts2-...
- **JSON ValueStack**:当配置了JSON结果类型,Struts2会自动将ValueStack中的对象转换为JSON格式,无需手动序列化。 4. **返回JSON数据**: - **Action的返回值**:Action的返回值可以是简单的字符串,也可以是...
同时,优化JSON序列化和反序列化的性能也很重要,可以通过调整Struts2的JSON插件配置实现。 6. **示例应用**:例如,创建一个简单的搜索功能,用户输入关键词,Action查询数据库后返回JSON数据,jQuery接收到数据后...
在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要的一系列依赖库。这些包包括但不限于以下几部分: 1. **Struts2核心库**:这是Struts2的基础,包含`...
在Struts2中实现Ajax交互,通常需要依赖一些特定的库和插件。以下是对"ajax-struts2需要的3个包"的详细解释: 1. **json.js**: 这是一个JavaScript库,用于处理JSON(JavaScript Object Notation)数据格式。JSON...
知识点详述: ### Struts2、JQuery与JSON在AJAX中的协同工作 #### Struts2简介 ...通过以上步骤,实现了使用Struts2、JQuery与JSON技术组合完成AJAX功能的构建,实现了数据的异步传输,提升了用户体验。
总的来说,Struts2的JSON插件大大简化了基于JSON的Web服务开发,使得Java开发者能够轻松地在Struts2框架内处理JSON数据,实现了前后端的高效通信。了解并熟练掌握这一插件的使用,对于提升Java Web应用的开发效率和...