第88节:Java中的Ajax和Jquery

ajax是什么?有什么用?原理,怎么用?

ajax是asynchronous javascript and xml(异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。

如用户注册,输入的用户名,提示已经被注册了。

AJAX

Asynchronous JavaScript and XML

ajax是一种不用重新加载整个网页的情况下,能够更新部分网页的技术。

什么是ajax?

是 异步 JavaScript 和 XML,是一种用于快速动态网页的技术,能够在后台与服务器进行少量的数据交换,就可以实现网页的异步更新了,就不用重新加载整个网页,让部分需要进行更新的内容进行更新了。

AJAX 实例

<html>
<body>
// div 来自服务器的信息
<div id="myDiv">
<h3>dashucoding</h3>
</div> <button type="button" onclick="loadXMLDoc()">Change Content</button> </body>
</html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
.... AJAX ...
}
</script>
</head>

创建 XMLHttpRequest 对象

XMLHttpRequestAJAX 的基础

XMLHttpRequest 用于在后台与服务器交换数据

IE5 和 IE6 使用 ActiveXObject

创建对象:

variable=new XMLHttpRequest();
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

XMLHttpRequest 对象用于和服务器交换数据

xmlhttp.open("GET","test1.txt",true);
xmlhttp.send(); open(method,url,async)
method GET 或 POST 请求的类型
url
async true(异步)或 false(同步) send(string) 将请求发送到服务器
仅用于 POST 请求

GET 和 POST:

GET更快更简单。使用POST的情况:

  1. 无法使用缓冲文件
  2. 向服务器发送大量数据
  3. 发送未知字符

GET 请求

xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();

xmlhttp.open("GET","demo_get2.asp?fname=dashu&lname=coding",true);
xmlhttp.send();

POST 请求

xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=dashu&lname=Coding"); // setRequestHeader(header,value)
header: 规定头的名称
value: 规定头的值

url - 服务器上的文件

xmlhttp.open("GET","ajax_test.asp",true);
// 可以是任何类型的文件

True 或 False

异步 JavaScript 和 XML

xmlhttp.open("GET","ajax_test.asp",true);
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

异步false

xmlhttp.open("GET","test1.txt",false);
// 不推荐使用 xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

服务器响应

属性 描述
responseText 获取字符串式的响应数据
responseXML 获取xml式的响应数据

responseText属性:

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;

onreadystatechange 事件

readyState 被改变时,会触发 onreadystatechange事件,readyState属性存有XMLHttpRequest的信息。

onreadystatechange 存储函数
readyState
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status
200: "OK"
404: 未找到页面
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.asp?q="+str,true);
xmlhttp.send();
}

ASP.NET

ASP.NET 是一个开发框架

TCP/IP 教程

XmlHttp

abort取消当前请求,语法:

oXMLHttpRequest.abort();

getAllResponseHeaders

获取响应的所有http头

语法:

strValue = oXMLHttpRequest.getAllResponseHeaders();
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/sample.xml", false);
xmlhttp.send();
alert(xmlhttp.getAllResponseHeaders());

getResponseHeader:

从响应信息中获取指定的http头

语法:

strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://localhost/sample.xml", false);
xmlhttp.send();
alert(xmlhttp.getResponseHeader("Server"));

onreadystatechange

指定当readyState属性改变时的事件处理句柄

语法:

oXMLHttpRequest.onreadystatechange = funcMyHandler;

介绍 JSON

一种轻量级的数据交换格式

一个对象以“{” 开始,“}” 结束

每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔

数组是值的有序集合

以“[”开始,“]”结束,值之间使用“,”分隔

Ajax

获取文本内容
document.getElementById("username").value
通过XmlHttpRequest请求,XML+http+Request

请求

<%@ 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"> function ajaxFunction(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
} return xmlHttp;
} //执行get请求
function get() { //1. 创建xmlhttprequest 对象
var request = ajaxFunction(); //2. 发送请求。 // request.open("GET" ,"/DemoServlet01" ,true );
request.open("GET" ,"/DemoServlet01?name=dashu&age=18" ,true );
request.send();
} //执行get请求
function get() { //创建xmlhttprequest 对象
var request = ajaxFunction(); //发送请求
request.open("GET" ,"/DemoServlet01?name=dashu&age=18" ,true ); //获取响应数据
request.onreadystatechange = function(){ if(request.readyState == 4 && request.status == 200){
//弹出响应的信息
alert(request.responseText);
}
}
request.send();
} </script> </head>
<body> <h3><a href="" onclick="get()">使用Ajax方式发送Get请求</a></h3> </body>
</html>

Post

<%@ 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"> //创建对象
function ajaxFunction(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
} return xmlHttp;
} function post() {
//创建对象
var request = ajaxFunction(); //发送请求
request.open( "POST", "/DemoServlet01", true ); //获取服务器传送过来的数据
request.onreadystatechange=function(){
if(request.readyState==4 && request.status == 200){
alert("post:"+request.responseText);
}
} request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //带数据过去 , 在send方法里面写表单数据。
request.send("name=dashucoding&age=19");
} </script> </head>
<body>
<h3>
<a href="" onclick="post()">使用Ajax方式发送Post请求</a>
</h3>
</body>
</html>

数据请求,创建对象:

校验用户名

dao

import java.sql.SQLException;
public interface UserDao {
/**
* 用于检测用户名是否存在
*/
boolean checkUserName(String username) throws SQLException;
}

util:

public class JDBCUtil02 {

	static ComboPooledDataSource dataSource = null;
static{
dataSource = new ComboPooledDataSource();
} public static DataSource getDataSource(){
return dataSource;
} /**
* 获取连接对象
* @return
* @throws SQLException
*/
public static Connection getConn() throws SQLException{
return dataSource.getConnection();
} /**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
public static void release(Connection conn , Statement st){
closeSt(st);
closeConn(conn);
} private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
} private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
} private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
public class TextUtils {

	/**
* 判断某一个字符串是否为空。
*/
public static boolean isEmpty(CharSequence s){
return s==null || s.length() == 0;
}
}

servlet

try{
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
UserDao dao = new UserDaoImpl();
boolean isExist = dao.checkUserName(name); if(isExist){
response.getWriter().println(1);// 存在
}else{
response.getWriter().println(2); // 反之
}
}catch(SQLException e){
e.printStackTrace();
}
xxx.jsp
<input type="text" name="name" id="name" onblur="checkUserName()"><span id="span01"></span>

<script type="text/javascript">
function checkUserName() {
//获取输入框的值
var name = document.getElementById("name").value;
//创建对象
var request = ajaxFunction(); //发送请求
request.open("POST" ,"/CheckUserNameServlet" , true ); //注册状态,获取服务器传过来的数据
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
var data = request.responseText;
if(data == 1){
document.getElementById("span01").innerHTML = "<font color='red'>用户名已存在!</font>";
}else{
document.getElementById("span01").innerHTML = "<font color='green'>用户名可用!</font>";
}
} } request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 输入框发送name
request.send("name="+name);
} </script>

结言

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

达叔小生:往后余生,唯独有你

You and me, we are family !

90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通

简书博客: 达叔小生

https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON的更多相关文章

  1. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  2. 第82节:Java中的学生管理系统

    第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...

  3. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

  4. 第79节:Java中一些要点

    第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...

  5. 第78节:Java中的网络编程(上)

    第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...

  6. 第77节:Java中的事务和数据库连接池和DBUtiles

    第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...

  7. 第76节:Java中的基础知识

    第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...

  8. 第71节:Java中HTTP和Servlet

    第71节:Java中HTTP和Servlet 前言 哭着也要看完!!!字数: 学习xml和TomCat 会写xml,看懂xml 解析对象 SAXReader reader = new SAXReade ...

  9. 第70节:Java中xml和tomcat

    第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...

随机推荐

  1. 磁盘管理 lvm减容扩容

    参考https://blog.csdn.net/wk022/article/details/50543922 新增磁盘/dev/sdb fdisk /dev/sdb  分两个分区  (n p 1 /n ...

  2. 史上最全 | 39个RNAseq分析工具与对比

    文献:Sahraeian S M E, Mohiyuddin M, Sebra R, et al. Gaining comprehensive biological insight into the ...

  3. Golang之路【目录】

    我正在写一套使用Golang全栈开发的教程,名字暂叫“Golang之路”,希望大家多提建议. 目录如下: Golang之路[第一篇]:Golang简介和入门Golang之路[第二篇]:Golang基础 ...

  4. 20155312 张竞予 Exp 8 Web基础

    Exp 8 Web基础 目录 基础问题回答 (1)什么是表单 (2)浏览器可以解析运行什么语言. (3)WebServer支持哪些动态语言 实践过程记录 1.Web前端:HTML 2.Web前端jav ...

  5. String Match

    Finding length of longest common substring /*Finding length of longest common substring using DP * * ...

  6. 小白的CTF学习之路8——节约内存的编程方式

    今天第二更,废话不说上干货 上一章我们学习了内存和cpu间的互动方式,了解到内存的空间非常有限,所以这样就需要我们在编程的时候尽可能的节省内存空间,用最少的空间发挥最大的效果,以下是几种节约内存的方法 ...

  7. LOJ-10097(2-sat问题)

    题目链接:传送门 思路: 2-sat问题,如果选每个集合最多有两个元素,eg:(Ai,Ai’),(Bi,Bi’): 如果Ai,Bi冲突,就只能选Ai,Bi’(建立边),然后缩点,查找有无相同集合的点在 ...

  8. TCP的三次握手 与 四次挥手

    TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行 主要步骤: 服务器一定处于Listen状态,否则客户端发过来的连接会被拒绝.注:服务器和客户端的角色是相对的 ...

  9. JAVA 8 主要新特性 ----------------(七)新时间日期 API ----- Duration “时间”间隔

    Duration:用于计算两个“时间”间隔 简介: 用法: 1.Zero常量 实例: Duration duration = Duration.ZERO; System.out.println(&qu ...

  10. webveiw返回死循环问题以及在打开web页面会唤起浏览器打开的问题解决

    微信.QQ空间等大量软件都内嵌了H5,不得不说这是一种趋势,Andriod与H5互调可以让我们实现混合开发.至于混合开发就是在一个App中内嵌一个轻量级的浏览器,一部分原生的功能改为Html 5来开发 ...