在慕课网上看了ajax的一些教程,自己参考着实现一下!
首先,导入json所需要的6个包
下载链接:jsonobjectjar.rar
总的目录:
前端页面:
首先是一个输入框:
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的实现步骤,其他在页面上把内容显示出来,如输入验证码时在旁边实时提示是否正确等操作,通过js实现即可,由于本人没怎么学过js,就这样子吧!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/loger1995/p/6526174.html