欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

程序员文章站 2022-05-27 15:06:01
第88节:Java中的Ajax和Jquery ajax是什么?有什么用?原理,怎么用? ajax是 (异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。 如用户注册,输入的用户名,提示已经被注册了。 ajax是一种不用重新加载整个网页的情况下,能够更新部分网页的技术。 什 ......

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:java中的ajax和jquery

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

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

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

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

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();

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

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 是一个开发框架

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

tcp/ip 教程

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

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;

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

介绍 json

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

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和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>

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

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>

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

数据请求,创建对象:

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

校验用户名

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

dao

import java.sql.sqlexception;
public interface userdao {
    /**
     * 用于检测用户名是否存在
     */
    boolean checkusername(string username) throws sqlexception;
}

util:
第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

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>

第88节:Java中的Ajax和ASP.NET和TCP/IP 教程和JSON

<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后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生

结语

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