struts2ajax.docx
- 文档编号:1132124
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:10
- 大小:281.57KB
struts2ajax.docx
《struts2ajax.docx》由会员分享,可在线阅读,更多相关《struts2ajax.docx(10页珍藏版)》请在冰点文库上搜索。
struts2ajax
Struts2.1.6精简实例系列教程(5):
用户注册模块(整合Jquery)
2009年08月03日09:
08
学习Jquery,当然要首先去它的官方网站:
1.3.2。
下载解压后,其实,也就是JS文件jquery-1.3.2.min.js。
Jquery最好的学习材料莫过于Jquery1.3API参考文档中文版(如下图),下载地址:
http:
//jquery-api-zh-相当美观的一份API文档,写得也很详细,有空时看看,看上一段时间,就能对里面的属性、方法、事件等的大概位置和大概用法有个了解。
当做网站用到时,能迅速查找到需要的并用上,就行了!
好,Jquery的简单介绍就到这里,具体的用法,也一言难尽,我们下到用到Jquery的代码中作详细解释,但更多的用法,还得靠大家平时对Jquery的学习和查阅!
来说说我们今期教程要讲解的模块——用户登录模块。
Model层是融合了iBatis来开发的。
关于iBatis的下载使用,请先看Struts2.1.6精简实例系列教程(3):
新闻管理Model层的开发(整合iBatis)。
首先在MySQL中,新建一个user表,建表SQL语句为:
createtableuser
(
IDintauto_incrementnotnullprimarykey,
LOGIN_NAMEvarchar(25),
PASSWORDvarchar(25)
);
将用户信息封装到一个POJO类里,User.java的代码如下:
packagecn.simple.pojo;
/***//**
*用户类
*@authorrongxinhua
*
*/
publicclassUser{
privateintid; //编号
privateStringloginName; //登录账号
privateStringpassword; //密码
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetLoginName(){
returnloginName;
}
publicvoidsetLoginName(StringloginName){
this.loginName=loginName;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
User类与user表之间的属性列映射、查询语句、更新语句的定义等,我们写在配置文件User.xml里,代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEsqlMap
PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
"http:
//ibatis.apache.org/dtd/sql-map-2.dtd">
--用"User"表示cn.simple.pojo.User类,下面用到此类时,用简称"User"即行-->
--定义结果集,用户类与用户表的映射-->
--查询用户列表-->
select*fromuser
--根据ID单查用户-->
select
IDasid,
LOGIN_NAMEasloginName,
PASSWORDaspassword
fromuser
whereID=#id#
--根据用户名查询用户-->
select
IDasid,
LOGIN_NAMEasloginName,
PASSWORDaspassword
fromuser
whereLOGIN_NAME=#loginName#
--添加用户-->
insertintouser(
LOGIN_NAME,
PASSWORD
)values(
#loginName#,
#password#
)
--修改密码-->
updateuserset
PASSWORD=#password#
whereID=#id#
--删除用户-->
deletefromuserwhereID=#id#
此时,我们须要将User.xml添加到SqlMapConfig.xml里去,即在SqlMapConfig.xml加入以下代码:
处理用户增删查改的业务逻辑类,UserManager.java,代码如下:
packagecn.simple.manager;
importjava.io.IOException;
importjava.io.Reader;
importjava.sql.SQLException;
importjava.util.List;
importcn.simple.pojo.User;
importmon.resources.Resources;
importcom.ibatis.sqlmap.client.SqlMapClient;
importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
/***//**
*用户管理
*@authorrongxinhua
*
*/
publicclassUserManager{
privatestaticSqlMapClientsqlMapper;
static{
try{
Readerreader=Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapper=SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}catch(IOExceptione){
thrownewRuntimeException("SqlMapClient创建失败!
");
}
}
/***//**
*查询用户列表
*@return用户对象列表
*@throwsSQLException
*/
publicstaticList
returnsqlMapper.queryForList("selectAllUsers");
}
/***//**
*根据ID单查用户
*@paramid用户ID
*@return用户对象
*@throwsSQLException
*/
publicstaticUserselectUserById(intid)throwsSQLException{
return(User)sqlMapper.queryForObject("selectUserById",id);
}
/***//**
*根据用户名单查用户对象
*@paramloginName
*@return
*@throwsSQLException
*/
publicstaticUserselectUserByLoginName(StringloginName)throwsSQLException{
Useruser=(User)sqlMapper.queryForObject("selectUserByLoginName",loginName);
returnuser;
}
/***//**
*添加用户
*@paramuser用户对象
*@throwsSQLException
*/
publicstaticvoidinsertUser(Useruser)throwsSQLException{
sqlMapper.insert("insertUser",user);
}
/***//**
*删除用户
*@paramid用户ID
*@throwsSQLException
*/
publicstaticvoiddeleteUserById(intid)throwsSQLException{
sqlMapper.delete("deleteUserById",id);
}
/***//**
*修改密码
*@paramuser
*@throwsSQLException
*/
publicstaticvoidupdatePassword(Useruser)throwsSQLException{
sqlMapper.update("updatePassword",user);
}
}
好,你们来写我们的Action类RegisterAction.java,代码如下:
packagecn.simple.action;
importjava.io.IOException;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts2.ServletActionContext;
importorg.apache.struts2.convention.annotation.Result;
importorg.apache.struts2.convention.annotation.Results;
importcn.simple.manager.UserManager;
importcn.simple.pojo.User;
importcom.opensymphony.xwork2.ActionSupport;
/***//**
*处理用户注册的Action
*@authorrongxinhua
*
*/
@Results({
@Result(name="success",location="register-success.jsp",type="dispatcher"),
@Result(name="input",location="registerform.jsp",type="dispatcher")
})
publicclassRegisterActionextendsActionSupport{
privateUseruser;
privateStringloginName1;
publicStringexecute()throwsException{
UserManager.insertUser(user);
returnSUCCESS;
}
/***//**
*判断用户名是否存在(用于Ajax异步验证)
*@throwsException
*/
publicvoidisExistLoginName()throwsException{
if(loginName1.length()<4||loginName1.length()>8){
sendMsg("用户名长度应在4-8之间!
");
}elseif(null!
=UserManager.selectUserByLoginName(loginName1)){
sendMsg("用户名"+loginName1+"已存在!
");
}else{
sendMsg("success");
}
}
/***//**
*向客户端发送数据
*@paramcontent
*@throwsIOException
*/
publicvoidsendMsg(Stringcontent)throwsIOException{
HttpServletResponseresponse=ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.getWriter().write(content);
}
publicUsergetUser(){
returnuser;
}
publicvoidsetUser(Useruser){
this.user=user;
}
publicStringgetLoginName1(){
returnloginName1;
}
publicvoidsetLoginName1(StringloginName1){
this.loginName1=loginName1;
}
}
最后,我们来写我们的注册页面registerform.jsp,代码如下:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
$(function(){
varstate=false; //表单是否允许submit的状态变量,全局变量
//当id为"loginName"的表单域中输入东西,响应键盘弹起事件时,会触发此function
$("#loginName").keyup(function(){
varloginName=$("#loginName").val(); //获取id为"loginName"的表单域的值
varurl="register!
isExistLoginName.action?
loginName1="+loginName;
$.get(url,null,callback); //用get方式向服务器端发送数据
});
functioncallback(msg){
if("success"==msg){ //收到服务器端返回的"success"字符串
$("#result").html(""); //清空提示信息显示域
state=true; //设置submit状态为true,表示允许提交
}else{
state=false; //设置submit状态为false,表示不允许提交
$("#result").html(msg); //将服务器端返回的提示信息渲染页面
}
}
//当表单submit时,会触发此function.
//若returntrue,则提交,若returnfalse,则不提交
$("form").submit(function(){
returnstate;
});
});
用户注册页
fielderror>
fielderror>
账号
red;"> 密码 好,我们来运行一下,看看效果怎么样。 输入http: //localhost: 8060/SimpleWeb/registerform.action。 运行效果截图如下: 当输入账号的长度小于4时,输入框右边会动态地显示如下的提示信息,而页面并不刷新、不重新加载。 此时,点“注册”是提交不了的。 当输入长度为4-8之间时,如“blogjava”,点注册后,能成功提交。 当数据库中已存在输入的用户名时,会给出相应的提示信息,如再次注册时输入“blogjava”,会动态显示如下信息: 好,本期就介绍到这里,还是重复那一句,要学好Jquery的话,还得多看API文档,并多做些例子测试一下,感受一下。 下期我们将继续Struts2.1.6+Jquery整合的话题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts2ajax