(一) Java中的XML操作

1、XML数据格式简介:

(1)XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

(2)特点:

XML是一种标记语言,很类似HTML。

XML的设计宗旨是传输数据,而非显示数据。

XML标签没有被预定义,您需要自行定义标签。

XML被设计为具有自我描述性。

XML是W3C的推荐标准。

(3)XML与HTML的区别:

A、XML不是HTML的替代

B、XML和HTML为不同的目的而设计:

XML被设计为传输和存储数据,其焦点是数据的内容。

HTML被设计用来显示数据,其焦点是数据的外观。

HTML旨在显示信息,而XML旨在传输信息。

(4)XML的特点:

A、XML仅仅是纯文本。它没啥特别,仅仅是纯文本而已。有能力处理纯文本的软件都可以处理XML。不过,能够读懂XML的应用程序可以有针对性地处理XML的标签。标签的功能性意义依赖于应用程序的特性。

B、XML没有预定义的标签:在HTML中使用的标签(以及HTML的结构)是预定义的。HTML文档只使用在标准中定义过的标签(比如<p>\<h1>等等)。

XML允许创作者定义自己的标签和自己的文档结构。

(5)XML的语法规则:在XML中,省略关闭标签是非法的,所有元素都必须有关闭标签。

A、XML标签对大小写敏感

B、XML必须正确地嵌套

C、XML文档必须有根元素

D、XML的属性须加引号

E、XML中,空格会被保留。

(6)

2、使用Java读取XML数据(解码器下载失败?!)

3、使用Java创建XML数据

4、使用Dom4j操作XML数据

(二)Java中的JSON操作

1、JSON数据格式简介

(1)JSON:JavaScript 对象表示法(JavaScript Object Notation)

JSON是存储和交换文本信息的语法。

JSON是轻量级的文本数据交换格式;

JSON独立于语言和平台;

JSON具有自我描述性,更易理解。

(2)JSON与XML的区别:

  类似XML,比XML更小、更快、更易解析。

  没有结束标签

  更短

  读写的速度更快

  使用数组

  不使用保留字

(3)JSON的语法:

A、JSON语法是JavaScript 对象中表示语法的子集

数据在名称/值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

B、JSON值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或false)、数组(在方括号中)、对象(在花括号中)、null

C、JSON对象:在花括号中书写,对象可以包含多个名称或值对:

{ “first name”:“John”,“lastName”:“Doe”}

D、JSON数组:在方括号中书写,数组可包含多个对象:

{  “employees”:[

{ “first name”:“John”,“lastName”:“Doe”} ,

{ “first name”:“Ja”,“lastName”:“cv”}    ]

}

2、使用 Java 读取 JSON 数据

3、使用Java创建JSON数据

(三)Java中的HTTP通信

1、使用 Http 的 Get 方式读取网络数据

public class TestGet {

    public static void main(String[] args) {
new ReadByGet().start();
}
static class ReadByGet extends Thread{
@Override
public void run() {
try { URL url=new URL("http://fanyi.youdao.com/openapi.do?keyfrom=shenxiaolin&key=956894252&type=data&doctype=xml&version=1.1&q=welcome");//xml为doctype,可选

这里写完,会有异常,surround try/catch一下。

这个URL获得:fanyi.youdao.com选择下方的,有道翻译API,调用数据接口。申请KEY

URLConnection  connection=url.openConnection();
InputStream is=connection.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"UTF-8");//为防止乱码
BufferedReader br=new BufferedReader(isr); String line;
StringBuilder builder=new StringBuilder();
while ((line=br.readLine())!=null) {
builder.append(line);
}
br.close();
isr.close();
is.close(); System.out.println(builder.toString()); } catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

2、使用 Http 的 Post 方式与网络交互通信

3、使用HttpClient进行Get方式通信

4、使用 HttpClient 进行 Post 方式通信

(四)Java 中的Socket通信

1、Socket 介绍

(1)Socket 又称“套接字”,应用程序常通过“套接字”向网络发出请求或者应答网络请求。

(2)Socket链接的建立过程

服务器监听、客户端发出请求、建立链接、通信

(3)Socket 特点:

A、Socket 基于TCP链接,数据传输有保障。

B、Socket 适用于建立长时间链接,不像Http,请求执行完之后就随机关闭。

C、Socket 编程通常应用于即时通讯。

2、ServerSocket 的建立与使用

public class MyServerSocket {

    public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(12345);
//block。。。main会阻塞
Socket socket =serverSocket.accept();
//建立连接
JOptionPane.showMessageDialog(null, "有客户端链接到本机的12345端口。");
} catch (IOException e) {
e.printStackTrace();
}
}

在服务器上输入:127.0.0.1:12345。会弹出一个会话窗口:有客户端链接到本机的12345。

3、使用 ServerSocket 建立聊天服务器-1.

(1)ChatSocket.java :

package com.jikexueyuan.testmyserversocket.main;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket; public class ChatSocket extends Thread {
Socket socket;
public ChatSocket(Socket s) {
this.socket=s;
}
@Override
public void run() {
try {
socket.getOutputStream();
BufferedWriter bw=new
BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
int count=0;
while (true) {
bw.write("loop:"+count);
sleep(1000);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

(2)ServerLisener.java :

package com.jikexueyuan.testmyserversocket.main;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; import javax.swing.JOptionPane; public class ServerLisener extends Thread { @Override
public void run() {
try {
ServerSocket serverSocket=new ServerSocket(12345);
while (true) {
//block。。。main会阻塞
Socket socket =serverSocket.accept();
//建立连接
JOptionPane.showMessageDialog(null, "有客户端链接到本机的12345端口。");
//将Socket传递给新的线程
new ChatSocket(socket).start();
}
} catch (IOException e) {
e.printStackTrace();

(3)MyserverSocket.java :(主方法在此)

package com.jikexueyuan.testmyserversocket.main;
public class MyServerSocket {
public static void main(String[] args) {
new ServerLisener().start();
}

4、使用 ServerSocket 建立聊天服务器-2

5、使用 Java 创建聊天客户端-1

6、使用Java创建聊天客户端-2.

10-Java 网络通信的更多相关文章

  1. Java程序员从笨鸟到菜鸟之(十三)java网络通信编程

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 首先声明一下,刚开始学习java网络通信编程就对他有一种畏惧感,因为自己对网络一窍不通,所 ...

  2. Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label)

    ylbtech-Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label) 1.返回顶部 1. Java 实例 - 标签(Label)  Java 实例 Java 中 ...

  3. Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

    ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素  Java 实例 以下实例 ...

  4. ArcGIS Server 10 Java 版的Rest服务的部署方法

    使用ArcGIS Server 10 Java版发布GIS服务,当使用ArcGIS Manager创建好服务后,然后打开“ArcGIS Services Directory”的链接时发现网页报出了找不 ...

  5. Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck

    ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等  Java ...

  6. java网络通信:异步非阻塞I/O (NIO)

    转: java网络通信:异步非阻塞I/O (NIO) 首先是channel,是一个双向的全双工的通道,可同时读写,而输入输出流都是单工的,要么读要么写.Channel分为两大类,分别是用于网络数据的S ...

  7. ArcGIS Server 10 Java 版的Rest服务手动配置方法

    Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...

  8. Java网络通信初步认知

    本文转载自:http://wing011203.cnblogs.com/ 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础 ...

  9. Top 10 Java Debugging Tips with Eclipse

    In this tutorial we will see about debugging java applications using Eclipse. Debugging helps us to ...

  10. JavaEE Tutorials (10) - Java持久化查询语言

    10.1查询语言术语14010.2使用Java持久化查询语言创建查询141 10.2.1查询中的命名参数142 10.2.2查询中的位置参数14210.3简化的查询语言语法142 10.3.1选择语句 ...

随机推荐

  1. java complier compliance level问题引发的思考

    http://blog.csdn.net/shan9liang/article/details/17266519 ******************************************* ...

  2. json和xml数据的解析

    一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...

  3. Python 日期格式转换

    经常需要爬取网站上的时间信息,不同的网站又有不同的日期显示方式.而我需要将日期格式转化为一种特定的格式,所以为了简便和学习,记录下各种不同的日期格式转换. 日期格式化符号: %y :两位数的年份表示( ...

  4. oracle表空间不足相关问题解决办法

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  5. HTML5基本元素初探

    最近看了一些HTML5的基础知识,写了一些小案例,记录一下,方便查找. 1.新建的HTML5页面中显著的变化是:DOCTYPE声明变简洁(<!DOCTYPE html>) / <me ...

  6. nulls last ratio_to_report(id) over() 占比函数

     ORDER BY t3.pctl DESC NULLS LAST http://blog.itpub.net/9932141/viewspace-600751/ http://blog.csdn.n ...

  7. jQuery键盘控制方法,以及键值(keycode)对照表

    键盘控制应用范围非常广泛,比如快捷键控制页面的滚动:在填写表单时候,限制输入内容:或者是屏蔽复制.粘贴.退后等功能.这里说说用jQuery比原生态的JS好用,代码简单清晰,不要问我JS怎么写,因为我不 ...

  8. XML 链接

    公共Webservice   网络上可供测试的Web Service腾讯QQ在线状态 WEB 服务Endpoint: http://www.webxml.com.cn/webservices/qqOn ...

  9. codeforces 451E Devu and Flowers

    题意:有n个瓶子每个瓶子有 f[i] 支相同的颜色的花(不同瓶子颜色不同,相同瓶子花视为相同) 问要取出s支花有多少种不同方案. 思路: 如果每个瓶子的花有无穷多.那么这个问题可以转化为  s支花分到 ...

  10. Android Studio Tips and Tricks

    Android Studio Delete Module 1.选中Module右击,选择 Open Module Settings,打开Project Structure 窗空.(或者选中Module ...