AJAX Servlet实现数据异步交互的方法

时间:2022-03-27 16:42:09

在慕课网上看了ajax的一些教程,自己参考着实现一下!

首先,导入json所需要的6个包

AJAX Servlet实现数据异步交互的方法

下载链接:jsonobjectjar.rar

总的目录:

AJAX Servlet实现数据异步交互的方法

前端页面:

首先是一个输入框:

?
1
<input type="text" id="keyword" name="keyword" onkeyup="getcontents()">

onkeyup表示按下键盘时的操作

javascript:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<%@ 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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 Servlet实现数据异步交互的方法

这就是ajax的实现步骤,其他在页面上把内容显示出来,如输入验证码时在旁边实时提示是否正确等操作,通过js实现即可,由于本人没怎么学过js,就这样子吧!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/loger1995/p/6526174.html