AJAX Servlet实现数据异步交互的方法
程序员文章站
2023-11-26 23:31:40
在慕课网上看了ajax的一些教程,自己参考着实现一下!
首先,导入json所需要的6个包
下载链接:jsonobjectjar_jb51.rar
总的目录:...
在慕课网上看了ajax的一些教程,自己参考着实现一下!
首先,导入json所需要的6个包
总的目录:
前端页面:
首先是一个输入框:
<input type="text" id="keyword" name="keyword" onkeyup="getcontents()">
onkeyup表示按下键盘时的操作
javascript:
<script type="text/javascript"> //全局xmlhttp对象 var xmlhttp; //获得xmlhttp对象 function createxmlhttp() { //对于大多数浏览器适用 var xmlhttp; if (window.xmlhttprequest) { xmlhttp = new xmlhttprequest(); } //考虑浏览器的兼容性 if (window.activexobject) { xmlhttp = new activexoject("microsoft.xmlhttp"); if (!xmlhttp) { xmlhttp = new activexoject("msxml2.xmlhttp"); } } return xmlhttp; } //回调函数 function callback() { //4代表完成 if(xmlhttp.readystate == 4){ //200代表服务器响应成功,404代表资源未找到,500服务器内部错误 if(xmlhttp.status == 200){ //交互成功获得响应的数据,是文本格式 var result = xmlhttp.responsetext; //解析获得的数据 var json = eval("("+ result +")"); //获得数据之后,就可以动态的显示数据了,把数据显示到输入框下面 alert(json); } } } //获得输入框的内容 function getcontents(){ //首先获得用户的输入内容,这里获得的是一个结点 var content = document.getelementbyid("keyword"); if(content.value ==""){ return; } //向服务器发送内容,用到xmlhttp对象 xmlhttp = createxmlhttp(); //给服务器发送数据,escape()不加中文会有问题 var url = "search?keyword=" + escape(content.value); //true表示js的脚本会在send()方法之后继续执行而不会等待来自服务器的响应 xmlhttp.open("get",url,true); //xmlhttp绑定回调方法,这个方法会在xmlhttp状态改变的时候调用,xmlhttp状态有0-4, //我们只关心4,4表示完成 xmlhttp.onreadystatechange=callback; xmlhttp.send(null); } </script>
总的index.jsp
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <!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> <script type="text/javascript"> //全局xmlhttp对象 var xmlhttp; //获得xmlhttp对象 function createxmlhttp() { //对于大多数浏览器适用 var xmlhttp; if (window.xmlhttprequest) { xmlhttp = new xmlhttprequest(); } //考虑浏览器的兼容性 if (window.activexobject) { xmlhttp = new activexoject("microsoft.xmlhttp"); if (!xmlhttp) { xmlhttp = new activexoject("msxml2.xmlhttp"); } } return xmlhttp; } //回调函数 function callback() { //4代表完成 if(xmlhttp.readystate == 4){ //200代表服务器响应成功,404代表资源未找到,500服务器内部错误 if(xmlhttp.status == 200){ //交互成功获得响应的数据,是文本格式 var result = xmlhttp.responsetext; //解析获得的数据 var json = eval("("+ result +")"); //获得数据之后,就可以动态的显示数据了,把数据显示到输入框下面 alert(json); } } } //获得输入框的内容 function getcontents(){ //首先获得用户的输入内容,这里获得的是一个结点 var content = document.getelementbyid("keyword"); if(content.value ==""){ return; } //向服务器发送内容,用到xmlhttp对象 xmlhttp = createxmlhttp(); //给服务器发送数据,escape()不加中文会有问题 var url = "search?keyword=" + escape(content.value); //true表示js的脚本会在send()方法之后继续执行而不会等待来自服务器的响应 xmlhttp.open("get",url,true); //xmlhttp绑定回调方法,这个方法会在xmlhttp状态改变的时候调用,xmlhttp状态有0-4, //我们只关心4,4表示完成 xmlhttp.onreadystatechange=callback; xmlhttp.send(null); } </script> </head> <body> <input type="text" id="keyword" name="keyword" onkeyup="getcontents()"> </body> </html>
后端:
ajaxservlet.java
package com.loger.servlet; import java.io.ioexception; import java.util.arraylist; import java.util.list; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import net.sf.json.jsonarray; /** * servlet implementation class ajaxservlet */ @webservlet("/search") public class ajaxservlet extends httpservlet { private static final long serialversionuid = 1l; static list<string> list = new arraylist<>(); static{ list.add("chenle"); list.add("陈乐"); } /** * @see httpservlet#httpservlet() */ public ajaxservlet() { super(); // todo auto-generated constructor stub } /** * @see httpservlet#doget(httpservletrequest request, httpservletresponse response) */ protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { //设置编码 request.setcharacterencoding("utf-8"); response.setcharacterencoding("utf-8"); //首先获得客户端发送来的数据 string keyword = request.getparameter("keyword"); system.out.println(keyword); //返回json数据 response.getwriter().write(jsonarray.fromobject(list).tostring()); } /** * @see httpservlet#dopost(httpservletrequest request, httpservletresponse response) */ protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // todo auto-generated method stub } }
运行结果:
这就是ajax的实现步骤,其他在页面上把内容显示出来,如输入验证码时在旁边实时提示是否正确等操作,通过js实现即可,由于本人没怎么学过js,就这样子吧!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 原生js实现-拖拽div并判断是否重叠
下一篇: C#事件实例详解
推荐阅读
-
AJAX Servlet实现数据异步交互的方法
-
html5-websocket基于远程方法调用的数据交互实现
-
tp5框架基于ajax实现异步删除图片的方法示例
-
vue+echarts实现动态绘制图表及异步加载数据的方法
-
Ajax上传实现根据服务器端返回数据进行js处理的方法
-
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
-
Ajax异步获取html数据中包含js方法无效的解决方法
-
C#实现异步连接Sql Server数据库的方法
-
两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)
-
SpringMVC环境下实现的Ajax异步请求JSON格式数据