Ajax几个简单的案例ajax_用户唯一验证、ajax_返回xml数据的处理包括分页处理

Ajax几个简单的案例(ajax_用户唯一验证、ajax_返回xml数据的处理(包括分页处理)

当然开发的前提是把相应的包导入项目中(开发环境myeclipse

ajax_用户唯一验证(servlet):

如图在myeclipse中的ajax_servlet项目中的index.jsp实现页面的显示:

Index.jsp代码:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>MyJSP'index.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<!--

<linkrel="stylesheet"type="text/css"href="styles.css">

-->

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/util.js"></script>

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/user/reg.js"></script>

</head>

<body>

<divalign="center">

<formaction="">

用户名:<inputtype="text"id="uname"/><spanid="cname"></span><br>

码:<inputtype="password"id="upass"/><br><input

type="submit"value="注册"/>

</form>

</div>

</body>

</html>

然后在webroot下新建一个js文件夹,这个里面写我们的js代码实现ajax使用

util.js中封装了发送和接收的请求和一些必要的代码

Util.js文件代码:

//通过id获取dom对象

function$(id){

returndocument.getElementById(id);

}

//创建XMLHttpRequest对象

functioncreateXHR(){

//声明

varxhr;

//IE浏览器XMLHTTP组件的名称

varaVertion=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp.2.0","Microsoft.XMLHttp"];

try{

//firefoxopera等浏览器

xhr=newXMLHttpRequest();

}catch(ex){

for(vari=0;i<aVertion.lengrh;i++){

try{

xmlHttpRequest=newActiveXObject(aVersion[i]);

returnxmlHttpRequest;

}catch(ex){

continue;

}

}

}

returnxhr;

}

varxhr=createXHR();

functionsendPost(content,url,success,fail){

//ajax处理操作

//创建xhr对象

//触发器

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

if(xhr.status==200||xhr.status==304){

success(xhr);

}else{

fail(xhr);

}

}

};

//打开请求

xhr.open("POST",true);

//设置类型

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//发送请求

xhr.send(content);

}

然后再user下的reg.js中写要完成的代码

Reg.js文件代码:

window.onload=function(){

//获取id="uname"节点对象

varunameDom=$("uname");

//为节点注册onblur事件

unameDom.onblur=function(){

//根据value属性获取穿的的值并且拼成传递的参数

varcontent="name="+unameDom.value;

//封装请求的url路径

varurl="./servlet/regUser.do?time="+newDate().getTime();

sendPost(content,disposeSuccess,disposeFail);

functiondisposeSuccess(){

$("cname").innerHTML=xhr.responseText;

}

functiondisposeFail(){

alert("请求失败");

}

};

};

最后在src下建立action处理方法

UserAction.java文件代码:

packagewww.csdn.net.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassUserServletextendsHttpServlet{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,IOException{

Stringname=request.getParameter("name");

System.out.println("===="+name);

response.setContentType("text/html;charset=utf-8");

PrintWriterout=response.getWriter();

if("xiao".equals(name)){

out.print("用户已经存在");//输出文本

}else{

out.print("用户名可以使用");

}

out.flush();

out.close();

}

/**

*Initializationoftheservlet.<br>

*

*@throwsServletExceptionifanerroroccurs

*/

publicvoidinit()throwsServletException{

//Putyourcodehere

}

}

这样就完成了,发布到tomcat服务器上然后用火狐浏览器测试就可以了

ajax_用户唯一验证(struts2)

如图所示;

首先实现页面的代码:

Index.jsp文件代码:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%@tagliburi="/struts-tags"prefix="s"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>MyJSP'index.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<!--

<linkrel="stylesheet"type="text/css"href="styles.css">

-->

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/util.js"></script>

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/user/reg.js"></script>

</head>

<body>

<divalign="center">

<h3>注册页面</h3>

</div>

<divalign="center">

<s:formaction="regUser"namespace="/csdn"theme="simple">

用户名:<s:textfieldname="usernaem"id="uname"/>

<spanid="cname"></span>

<br>

码:<s:textfieldname="userpass"id="upass"/>

<br>

箱:<s:textfieldname="useremial"id="uemail"/>

<br>

<s:submitvalue="注册"/>

</s:form>

</div>

</body>

</html>

Sc.jsp文件代码:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%@tagliburi="/struts-tags"prefix="s"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>MyJSP'index.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<!--

<linkrel="stylesheet"type="text/css"href="styles.css">

-->

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/util.js"></script>

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/user/reg.js"></script>

</head>

<body>

。。。。。。。。。

</body>

</html>

然后是js文件

Util.js文件代码:

//通过id获取dom对象

function$(id){

returndocument.getElementById(id);

}

//创建XMLHttpRequest对象

functioncreateXHR(){

//声明

varxhr;

//IE浏览器XMLHTTP组件的名称

varaVertion=["MSXML2.XMLHttp.5.0","Microsoft.XMLHttp"];

try{

//firefoxopera等浏览器

xhr=newXMLHttpRequest();

}catch(ex){

for(vari=0;i<aVertion.lengrh;i++){

try{

xmlHttpRequest=newActiveXObject(aVersion[i]);

returnxmlHttpRequest;

}catch(ex){

continue;

}

}

}

returnxhr;

}

Reg.js文件代码:

window.onload=function(){

//获取id="uname"节点对象

varunameDom=$("uname");

//为节点注册onblur事件

unameDom.onblur=function(){

//根据value属性获取穿的的值并且拼成传递的参数

varcontent="name="+unameDom.value;

//封装请求的url路径

varurl="./csdn/UserAction_checkName.action?time="+newDate().getTime();

//获取创建的xhr对象(XMLHTTPRequest对象)

varxhr=createXHR();

//事件处理函数触发器

xhr.onreadystatechange=function(){

if(xhr.readyState==4){//状态码返回4处理完毕(这样才能使用xhr.responseText获取返回的结果)

if(xhr.status==200||xhr.status==304){//服务器返回的状态码200一切ok304服务器没有被修改

//ajax请求之后再这里做相应的处理

$("cname").innerHTML=xhr.responseText;

//如果接收的是XML文件就用responseXML;

}

}

};

//打开请求

xhr.open("POST",true);

//如果用POST请求向服务器发送数据,需要将“Content-type”的首部

//设置为“application/x-www-form-urlencoded它会告知服务器正在发送数据,并且数据已经符合URL编码了

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//发送请求

xhr.send(content);

};

};

Struts.xml文件代码:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<includefile="www/csdn/project/resource/struts-constant.xml"/>

<packagename="test"namespace="/csdn"extends="struts-default">

<actionname="UserAction_*"class="www.csdn.project.action.UserAction"method="{1}">

<resultname="reg"type="plainText">

<paramname="location">/sc.jsp</param>

<paramname="charSet">UTF-8</param>

</result>

</action>

</package>

</struts>

最后UserAction.java文件代码:

packagewww.csdn.project.action;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.struts2.ServletActionContext;

importcom.opensymphony.xwork2.ActionSupport;

publicclassUserActionextendsActionSupport{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privateStringname;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicStringcheckName(){

HttpServletResponseresponse=ServletActionContext.getResponse();//获取response对象

response.setContentType("text/html;charset=utf-8");//设置相应文档类型

PrintWriterout=null;//声明输出的out对象

try{

out=response.getWriter();//根据response对象获取out对象

}catch(IOExceptione){

e.printStackTrace();

}

if("xiao".equals(name)){

out.print("用户已经存在");//输出文本

}else{

out.print("用户名可以使用");

}

out.flush();//立即写入

out.close();//关闭

return"reg";

}

}

ajax_返回xml数据的处理(包括分页)(数据库自己建立,在DAO层和service层实现用hibernate

如图项目结构

连接数据库

数据库在相应层实现就行

首先实现页面的显示

Index.jsp文件代码:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%@tagliburi="/struts-tags"prefix="s"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>MyJSP'index.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<!--

<linkrel="stylesheet"type="text/css"href="styles.css">

-->

</head>

<body>

<divalign="center">

<ahref="${pageContext.request.contextPath}/csdn/UserAction_login.action">进入后台</a>

</div>

</body>

</html>

Cindex.jsp文件代码:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%@tagliburi="/struts-tags"prefix="s"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()

+path+"/";

%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

<html>

<head>

<basehref="<%=basePath%>">

<title>MyJSP'index.jsp'startingpage</title>

<metahttp-equiv="pragma"content="no-cache">

<metahttp-equiv="cache-control"content="no-cache">

<metahttp-equiv="expires"content="0">

<metahttp-equiv="keywords"content="keyword1,keyword3">

<metahttp-equiv="description"content="Thisismypage">

<!--

<linkrel="stylesheet"type="text/css"href="styles.css">

-->

<scripttype="text/javascript"src="${pageContext.request.contextPath}/js/util.js"></script>

<scripttype="text/javascript"src="${pageContext.request.contextPath}/js/user/user_checkName.js"></script>

<scripttype="text/javascript"src="${pageContext.request.contextPath}/js/user/user_query.js"></script>

</head>

<body>

<divalign="center">

<divstyle="border:1px;width:600px;height:400px;">

<tablewidth="300px">

<tr>

<td>

用户名:

</td>

<td>

<s:textfieldid="uname"name="username"theme="simple"></s:textfield>

</td>

<tdstyle="color:red;font-size:10px;"id="cname">

</td>

</tr>

<tr>

<td>

:

</td>

<td>

<s:passwordid="upass"name="userpass"theme="simple"></s:password>

</td>

<td>

</td>

</tr>

<tr>

<tdcolspan="3"style="text-align:center;">

<s:ahref="#"theme="simple">注册</s:a>

</td>

</tr>

</table>

</div>

<div>

<span>不使用它</span>

<s:urlid="user_query"namespace="/csdn"action="UserAction_query"></s:url>

<s:ahref="%{user_query}">查询所有用户</s:a>

</div>

<br/>

<div>

<inputtype="button"value="查询所有用户"id="queryBtn">

</div>

<div>

<h3>显示所有的用户信息</h3>

<tableborder="1px"cellpadding="0"cellspacing="0">

<thead>

<th><inputtype="checkbox"id="qx"/></th>

<th>序号</th>

<th>姓名</th>

<th>性别</th>

<th>职位</th>

<th>操作</th>

</thead>

<tbodyid="showUsers"></tbody>

</table>

</div>

</div>

</body>

</html>

userpage_xml.js文件:(这里实现了分页)

window.onload=function(){

varuserBtnDom=$("userBtn");

userBtnDom.onclick=function(){

//封装请求的数据

varcontent="pagination.nowPage="+1;

//封装请求的路径

varurl="./csdn/UserAction_pagexml.action?time="

+newDate().getTime();

//调用封装的ajaxpost请求

sendPost(content,disposeFail);

//成功处理函数

functiondisposeSuccess(xhr){

//接受相应的xml数据并且返回xmlDocument对象

varxmlDoc=xhr.responseXML;

//获取根对象

varroot=xmlDoc.documentElement;

//获取根节点中所有的Member节点对象

varusers=root.getElementsByTagName("user");

//显示数据

showUsers(users);

$("firstPage").onclick=function(){

content="pagination.nowPage="+1;

//发送请求的时候

sendPost(content,disposeFail);

};

$("backPage").onclick=function(){

content="pagination.nowPage="+eval(root.getAttribute("nowpage")+"-"+1);

//发送请求的时候

sendPost(content,disposeFail);

};

$("nextPage").onclick=function(){

content="pagination.nowPage="+eval(root.getAttribute("nowpage")+"+"+1);

//发送请求的时候

sendPost(content,disposeFail);

};

$("lastPage").onclick=function(){

content="pagination.nowPage="+root.getAttribute("countPage");

//发送请求的时候

sendPost(content,disposeFail);

};

}

//失败处理函数

functiondisposeFail(xhr){

alert("失败处理");

}

};

};

varupTr=null;

functionshowUsers(users){

//清空操作

if($("showUsers").hasChildNodes()){

for(varjj=0;jj<$("showUsers").childNodes.length;){

$("showUsers").removeChild($("showUsers").childNodes[jj]);

}

}

for(vari=0;i<users.length;i++){

varuser=users[i];

vartr=document.createElement("tr");

vartd1=document.createElement("td");

varinput=document.createElement("input");

input.setAttribute("type","checkbox");

input.setAttribute("value",user.getAttribute("id"));

td1.appendChild(input);

vartd2=document.createElement("td");

td2.appendChild(document.createTextNode(user.getAttribute("id")));

vartd3=document.createElement("td");

td3.appendChild(document.createTextNode(user

.getElementsByTagName("name")[0].firstChild.nodeValue));

vartd4=document.createElement("td");

td4.appendChild(document.createTextNode(user

.getElementsByTagName("sex")[0].firstChild.nodeValue));

vartd5=document.createElement("td");

td5.appendChild(document.createTextNode(user

.getElementsByTagName("role")[0].firstChild.nodeValue));

vartd6=document.createElement("td");

//创建修改按钮

varupdateBtn=document.createElement("button");

//为按钮添加文本节点

updateBtn.appendChild(document.createTextNode("编辑"));

updateBtn.onclick=function(){

upTr=this.parentNode.parentNode;

vartds=upTr.childNodes;

for(vari=0;i<tds.length;i++){

vartd=tds[i];

if(td.nodeType==1){

if(i==0){

domUserName.value=td.firstChild.nodeValue;

}elseif(i==1){

domUserSex.value=td.lastChild.nodeValue;

}elseif(i==2){

domUserRole.value=td.childNodes[0].nodeValue;

}

}

};

};

td6.appendChild(updateBtn);

tr.appendChild(td1);

tr.appendChild(td2);

tr.appendChild(td3);

tr.appendChild(td4);

tr.appendChild(td5);

tr.appendChild(td6);

$("showUsers").appendChild(tr);

}

}

functionsendPost(content,fail){

//ajax处理操作

//创建xhr对象

varxhr=createXHR();

//触发器

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

if(xhr.status==200||xhr.status==304){

success(xhr);

}else{

fail(xhr);

}

}

};

//打开请求

xhr.open("POST","application/x-www-form-urlencoded");

//发送请求

xhr.send(content);

}

Struts.xml文件代码:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<includefile="www/csdn/project/resource/struts-constant.xml"/>

<packagename="test"namespace="/csdn"extends="struts-default">

<actionname="UserAction_*"class="www.csdn.project.action.UserAction"method="{1}">

<resultname="login">/WEB-INF/page/user/user_list.jsp</result>

<resultname="xml"type="plainText">

<paramname="location">./index.jsp</param>

<paramname="charSet">UTF-8</param>

</result>

</action>

</package>

</struts>

分页的实现是在util层中封装的实现分页的代码:

Pagination.java文件代码:

packagewww.csdn.project.util;

importjava.util.ArrayList;

importjava.util.List;

/**

*

*@authorkun

*

*

*@param<T>

*/

publicclassPagination<T>extendsBaseHibernateDAO{

//每页显示的记录数

privatestaticfinalIntegerPAGESIZE=5;

//总页数

privateIntegercountPage;

//当前页

privateIntegernowPage;

//总记录数

privateIntegercountRecond;

//当前页数据

privateList<T>entities;

/**

*默认构造器

*/

publicPagination(){

super();

}

/**

*带有参数的构造器

*

*@paramclassName

*@paramnowPage

*/

publicPagination(Class<T>className,intnowPage){

this.countRecond=getCountRecord(className);

this.countPage=this.countRecond%PAGESIZE==0?this.countRecond

/PAGESIZE:this.countRecond/PAGESIZE+1;

//关于当前的处理

if(nowPage<=1){

this.nowPage=1;

}else{

if(nowPage>=this.countPage){

this.nowPage=this.countPage;

}else{

this.nowPage=nowPage;

}

}

this.entities=getNowPageInfo(this.nowPage,className);

}

publicIntegergetCountPage(){

returncountPage;

}

publicvoidsetCountPage(IntegercountPage){

this.countPage=countPage;

}

publicIntegergetNowPage(){

returnnowPage;

}

publicvoidsetNowPage(IntegernowPage){

this.nowPage=nowPage;

}

publicIntegergetCountRecond(){

returncountRecond;

}

publicvoidsetCountRecond(IntegercountRecond){

this.countRecond=countRecond;

}

publicList<T>getEntities(){

returnentities;

}

publicvoidsetEntities(List<T>entities){

this.entities=entities;

}

/**

*等到总记录数

*

*@paramclassName

*@return

*/

publicIntegergetCountRecord(Class<T>className){

inti=0;

try{

i=Integer.parseInt(this.getSession().createQuery(

"selectcount(c)from"+className.getName()+"c")

.uniqueResult().toString());

}catch(Exceptione){

e.printStackTrace();

}finally{

HiberSessionFactory.closeSession();

}

returni;

}

/**

*获取当前页的信息

*

*@paramnowpage

*@paramclassName

*@return

*/

@SuppressWarnings("unchecked")

publicList<T>getNowPageInfo(Integernowpage,Class<T>className){

List<T>entities=newArrayList<T>();

try{

entities=this.getSession().createCriteria(className)

.setFirstResult((nowpage-1)*PAGESIZE).setMaxResults(

PAGESIZE).list();

}catch(Exceptione){

e.printStackTrace();

}finally{

HiberSessionFactory.closeSession();

}

returnentities;

}

}

最后在UserAction.java文件中实现XML数据处理:

UserAction.java文件代码:

packagewww.csdn.project.action;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.struts2.ServletActionContext;

importwww.csdn.project.domain.User;

importwww.csdn.project.util.Pagination;

importcom.opensymphony.xwork2.ActionSupport;

publicclassUserActionextendsActionSupport{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privatePagination<User>pagination;

publicvoidsetPagination(Pagination<User>pagination){

this.pagination=pagination;

}

publicStringpagexml(){

//当前页信息

pagination=newPagination<User>(User.class,pagination.getNowPage());

HttpServletResponseresponse=ServletActionContext.getResponse();

response.setContentType("text/xml;charset=utf-8");

PrintWriterout=null;

try{

out=response.getWriter();

out.println("<?xmlversion='1.0'encoding='UTF-8'?>");

out.print("<usersnowpage='"+pagination.getNowPage()+"'countPage='"+pagination.getCountPage()+"'countRecond='"+pagination.getCountRecond()+"'>");

for(Userentity:pagination.getEntities()){

out.print("<userid='"+entity.getId()+"'>");

out.print("<name>");

out.print(entity.getName());

out.print("</name>");

out.print("<sex>");

out.print(entity.getSex());

out.print("</sex>");

out.print("<role>");

out.print(entity.getRole());

out.print("</role>");

out.print("</user>");

}

out.print("</users>");

out.flush();

out.close();

}catch(IOExceptione){

e.printStackTrace();

}

return"xml";

}

publicStringlogin(){

return"login";

}

}

相关文章

$.AJAX()方法中的PROCESSDATA参数 在使用jQuery的$.ajax()方...
form表单提交的几种方式 表单提交方式一:直接利用form表单提...
文章浏览阅读1.3k次。AJAX的无刷新机制使得在注册系统中对于...
文章浏览阅读1.2k次。 本文将解释如何使用AJAX和JSON分析器在...
文章浏览阅读2.2k次。/************************** 创建XML...
文章浏览阅读3.7k次。在ajax应用中,通常一个页面要同时发送...