Java中json使用方法_动力节点Java学院整理

摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

一、准备工作 

json是个非常重要的数据结构,在web开发中应用十分广泛。我觉得每个人都应该好好的去研究一下json的底层实现,分析一下json的相关内容,希望大家能有所收获。首先给大家说一下使用json前的准备工作,需要准备下面的六个jar包:

需要说明几点:

(1)json-lib最新版本可以从这个地方下载:http://sourceforge.net/projects/json-lib/files/json-lib/

(2)ezmorph是一个简单的java类库,用于将一种bean转换成另外一种bean。其动态bean的实现依赖于commons-beanutils包。ezmorph可以在这个地方下载源码:http://sourceforge.net/projects/ezmorph/files/ezmorph/

(3)commons-beanutils是操作Java Bean的类库,依赖于commons-collections。可以从这里下载:http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi

(4)commons-collections类库是各种集合类和集合工具类的封装。可以从这里下载:http://commons.apache.org/proper/commons-collections/download_collections.cgi

二、语法相关

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中
      数据由逗号分隔
      花括号保存对象
      方括号保存数组
JSON 值

JSON 值可以是:

数字(整数或浮点数)
     字符串(在双引号中)
     逻辑值(true 或 false)
     数组(在方括号中)
     对象(在花括号中)
     null

JSON有两种表示结构

对象和数组。

对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{
 key1:value1,
 key2:value2,
 ...
} 

1.{"department":"产品研发","name":"小王","age":23}

其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组

数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

 [
 {
  key1:value1,
  key2:value2
 },
 {
   key3:value3,
   key4:value4
 }
] 

如:

[{"department":"产品研发","name":"小王","age":23},{"department":"产品研发","name":"小王","age":23}] 

三、Java中使用Json基本使用方法

整个工程目录 如下 :

Employer.java如下

package com.bjpowernode.json;
import net.sf.json.JSONString;
public class Employer {
 private String name;
 private Integer age;
 private String department;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public String getDepartment() {
  return department;
 }
 public void setDepartment(String department) {
  this.department = department;
 }
 @Override
 public String toString() {
  return "Employer [name=" + name + ", age=" + age + ", department="
    + department + "]";
 }
/* @Override 要调用这个方法请implements JSONString
 public String toJSONString() {
  return "{\"name\":\"" + name + "\",\"department\":\"" + department + "\"}";
 }*/
} 

JsonTest.java全部代码如下:

package com.bjpowernode.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
/**
 *Json使用方法总结
 *@author linbingwen(博客:http://blog.csdn.net/evankaka)
 *@since 2015.7.3
 */
public class JsonTest {
 public static void main(String args[]){
  beanToJson();
  beanToJson1();
  beanToJson2();
  arrayToJson();
  listToJson();
  mapToJson();
 }
 /**
  * bean对象转json
  * @return void
  */
 public static void beanToJson(){
  Employer employer=new Employer();
  employer.setName("小王");
  employer.setAge(23);
  employer.setDepartment("产品研发");
  JSONObject json = JSONObject.fromObject(employer);
  System.out.println("-----------------------------------------beanToJson() 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------beanToJson() 结束------------------------------------------------");
 }
 /**
  * bean对象转json,带过滤器
  * @return void
  */
 public static void beanToJson1(){
  Employer employer=new Employer();
  employer.setName("小王");
  employer.setAge(23);
  employer.setDepartment("产品研发");
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setExcludes(new String[]
  { "age" });
  JSONObject json = JSONObject.fromObject(employer, jsonConfig);
  System.out.println("-----------------------------------------beanToJson1()带过滤器 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------beanToJson1()带过滤器 结束------------------------------------------------");
 }
 /**
  * bean对象转json,带过滤器
  * @return void
  */
 public static void beanToJson2(){
  Employer employer=new Employer();
  employer.setName("小王");
  employer.setAge(23);
  employer.setDepartment("产品研发");
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
   public boolean apply(Object source, String name, Object value)
   {
    return source instanceof Employer && name.equals("age");
   }
  });
  JSONObject json = JSONObject.fromObject(employer, jsonConfig);
  System.out.println("-----------------------------------------beanToJson2() 带过滤器 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------beanToJson2() 带过滤器 结束------------------------------------------------");
 }
 /**
  * array对象转json
  * @return void
  */
 public static void arrayToJson(){
  Employer employer1=new Employer();
  employer1.setName("小王");
  employer1.setAge(23);
  employer1.setDepartment("产品研发");
  Employer employer2=new Employer();
  employer2.setName("小王");
  employer2.setAge(23);
  employer2.setDepartment("产品研发");
  Employer[] employers=new Employer[]{employer1,employer2};
  JSONArray json = JSONArray.fromObject(employers);
  System.out.println("-----------------------------------------arrayToJson() 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------arrayToJson() 结束------------------------------------------------");
 }
 /**
  * list对象转json
  * @return void
  */
 public static void listToJson(){
  List<String> list = new ArrayList<String>();
  list.add( "first" );
  list.add( "second" );
  JSONArray json = JSONArray.fromObject(list);
  System.out.println("-----------------------------------------listToJson() 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------listToJson() 结束------------------------------------------------");
 }
 /**
  * map对象转json
  * @return void
  */
 public static void mapToJson(){
  Map<Object,Object> map = new HashMap<Object,Object>();
  map.put("name", "json");
  map.put("bool", Boolean.TRUE);
  map.put("int", new Integer(1));
  map.put("arr", new String[] { "a", "b" });
  map.put("func", "function(i){ return this.arr[i]; }");
  JSONObject json = JSONObject.fromObject(map);
  System.out.println("-----------------------------------------mapToJson() 开始------------------------------------------------");
  System.out.println(json.toString());
  System.out.println("-----------------------------------------mapToJson() 结束------------------------------------------------");
 }
} 

下面分别对各个部分来进行说明

1. Bean转换成json代码

/**
 * bean对象转json
 * @return void
 */
public static void beanToJson(){
 Employer employer=new Employer();
 employer.setName("小王");
 employer.setAge(23);
 employer.setDepartment("产品研发");
 JSONObject json = JSONObject.fromObject(employer);
 System.out.println("-----------------------------------------beanToJson() 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------beanToJson() 结束------------------------------------------------");
} 

运行结果如下:

2. 数组转换成json代码

/**
 * array对象转json
 * @return void
 */
public static void arrayToJson(){
 Employer employer1=new Employer();
 employer1.setName("小王");
 employer1.setAge(23);
 employer1.setDepartment("产品研发"); 

 Employer employer2=new Employer();
 employer2.setName("小王");
 employer2.setAge(23);
 employer2.setDepartment("产品研发");
 Employer[] employers=new Employer[]{employer1,employer2};
 JSONArray json = JSONArray.fromObject(employers);
 System.out.println("-----------------------------------------arrayToJson() 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------arrayToJson() 结束------------------------------------------------");
} 

运行结果如下:

3. List集合转换成json方法

/**
 * list对象转json
 * @return void
 */
public static void listToJson(){
 List<String> list = new ArrayList<String>();
 list.add( "first" );
 list.add( "second" );
 JSONArray json = JSONArray.fromObject(list);
 System.out.println("-----------------------------------------listToJson() 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------listToJson() 结束------------------------------------------------");
} 

运行结果如下:

4. Map集合转换成json方法

/**
 * map对象转json
 * @return void
 */
public static void mapToJson(){
 Map<Object,Object> map = new HashMap<Object,Object>();
 map.put("name", "json");
 map.put("bool", Boolean.TRUE);
 map.put("int", new Integer(1));
 map.put("arr", new String[] { "a", "b" });
 map.put("func", "function(i){ return this.arr[i]; }");
 JSONObject json = JSONObject.fromObject(map);
 System.out.println("-----------------------------------------mapToJson() 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------mapToJson() 结束------------------------------------------------");
} 

运行结果如下:

四、JSONObject的过滤设置

通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值。例如下面的类:

package com.bjpowernode.json;
public class Employer {
 private String name;
 private Integer age;
 private String department;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public String getDepartment() {
  return department;
 }
 public void setDepartment(String department) {
  this.department = department;
 }
 @Override
 public String toString() {
  return "Employer [name=" + name + ", age=" + age + ", department="
    + department + "]";
 }
} 

如果我想过滤age属性怎么办?

方法一:实现JSONString接口

package com.bjpowernode.json;
import net.sf.json.JSONString;
public class Employer implements JSONString{
 private String name;
 private Integer age;
 private String department;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public String getDepartment() {
  return department;
 }
 public void setDepartment(String department) {
  this.department = department;
 }
 @Override
 public String toString() {
  return "Employer [name=" + name + ", age=" + age + ", department="
    + department + "]";
 }
 @Override
 public String toJSONString() {
  return "{\"name\":\"" + name + "\",\"department\":\"" + department + "\"}";
 }
} 

方法二:设置jsonconfig实例,对包含和需要排除的属性进行添加或删除。

/**
 * bean对象转json,带过滤器
 * @return void
 */
public static void beanToJson1(){
 Employer employer=new Employer();
 employer.setName("小王");
 employer.setAge(23);
 employer.setDepartment("产品研发");
 JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setExcludes(new String[]
  { "age" });
  JSONObject json = JSONObject.fromObject(employer, jsonConfig);
 System.out.println("-----------------------------------------beanToJson1()带过滤器 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------beanToJson1()带过滤器 结束------------------------------------------------");
} 

方法三:使用propertyFilter实例过滤属性

/**
 * bean对象转json,带过滤器
 * @return void
 */
public static void beanToJson2(){
 Employer employer=new Employer();
 employer.setName("小王");
 employer.setAge(23);
 employer.setDepartment("产品研发");
 JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
   public boolean apply(Object source, String name, Object value)
   {
    return source instanceof Employer && name.equals("age");
   }
  });
  JSONObject json = JSONObject.fromObject(employer, jsonConfig);
 System.out.println("-----------------------------------------beanToJson2() 带过滤器 开始------------------------------------------------");
 System.out.println(json.toString());
 System.out.println("-----------------------------------------beanToJson2() 带过滤器 结束------------------------------------------------");
} 

五、JavaScript中使用JSON

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

之前我一直有个困惑,分不清普通字符串

1、json字符串和json对象的区别。

字符串:这个很好解释,指使用“”双引号或''单引号包括的字符。例如:var comStr = 'this is string';

json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";

json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };

2、JSON 实例 - 来自字符串的对象

创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}'; 

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")"); 

如下格式:

<!DOCTYPE html>
<html>
<body>
<h2>Create Object from JSON String</h2>
<p>
First Name: <span id="fname"></span><br>
Last Name: <span id="lname"></span><br>
</p>
<script>
var txt = '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';
var obj = eval ("(" + txt + ")");
document.getElementById("fname").innerHTML=obj.employees[1].firstName
document.getElementById("lname").innerHTML=obj.employees[1].lastName
</script>
</body>
</html> 

输出结果:

不过eval解析json有安全隐患!现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,请使用这两个方法!

如果担心parse()对对象抛异常,可以加一个封装函数:

JSON.pParse = function( tar ) {
 if( typeof( tar ) === 'string' ) {
  return JSON.parse( tar );
 } else {
  return tar;
 }
}; 

1、从JSON中读数据

//1,从JSON中读数据
function ReadJSON() {
 alert(obj.key1);
 alert(obj.key2); 

 alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
 alert(obj.object.msg); //或者alert(obj.object["msg"])
}

2、增加JSON中的数据

function Add() {
 //往JSON对象中增加了一条记录
 obj.sex= "男" //或者obj["sex"]="男"
 alert(obj.sex);
} 

3、更新JSON中的数据

function Update() {
 obj.count = 10; //或obj["count"]=10
}

4、删除JSON中的数据

function Delete() {
 delete obj.count;
}
、遍历JSON中的数据
function Traversal() {
 for (var c in obj) {
  console.log(c + ":", obj[c]);
 }
} 

六、XML与JSON对比

XML定义

扩展标记语言 (Extensible Markup Language, XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML使用DTD(document type definition)文档类型定义来组织数据;?格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言(SGML) 的子集,非常适合Web 传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

JSON定义

JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999的一个子集。

XML和JSON优缺点

(1).XML的优缺点

<1>.XML的优点

A.格式统一,符合标准;

B.容易与其他系统进行远程交互,数据共享比较方便。

<2>.XML的缺点

A.XML文件庞大,文件格式复杂,传输占带宽;

B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;

C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;D.服务器端和客户端解析XML花费较多的资源和时间。

JSON的优缺点

<1>.JSON的优点:

A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

<2>.JSON的缺点

A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;

B.JSON格式目前在Web Service中推广还属于初级阶段。

时间: 2017-07-29

tomcat之目录映射_动力节点Java学院整理

web应用的概念:一个web应用包含了许多我们做好的web资源,里面或许包括了多个静态web资源和动态web资源,如html.css.js文件,jsp文件,Java程序,jar包和配置文件等等,如我在Tomcat的[webapps]目录下的自定义目录[fjdingsdapp]中包含了一个1.html文件,那么这个在[fjdingsdapp]整个可以运行文件中的所有资源可以称为是我开发的一个web应用程序,简称web应用,而单单[fjdingsdapp]这个包含所有我开发的web资源称为我的web

Java日志相关技术_动力节点Java学院整理

Java日志相关技术 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好的完善系统.本文要来分享一些Java程序员最常用的Java日志框架组件. 1.log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信

java解析xml汇总_动力节点Java学院整理

[引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用.优缺点及性能测试. 一.[基础知识--扫盲] sax.dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无法解析xml文档的:jaxp只是api,它进一步封装了sax.dom两种接口,并且提供了DomcumentBuilderFactory/DomcumentBuilder和SAXParserFactory/SAXParser

Ehcache简介_动力节点Java学院整理

使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存. CachingFilter功能可以对HTTP响应的内容进行缓存. 1.主要特性 1. 快速.      2. 简单.      3. 多种缓存策略      4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题      5. 缓存数据会在虚拟机重启的过程中写入磁盘      6. 可以通过RMI.可插入API等方式进行分布式缓存      7. 具有缓存和缓存管理器的侦听接口      8. 支持多缓存管理器实例,以

Javabean简介_动力节点Java学院整理

一. javabean 是什么? Bean的中文含义是"豆子",顾名思义,JavaBean是指一段特殊的Java类,就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: JavaBean定义了一组规则 JavaBean就是遵循此规则的平常的Java对象 满足这三个条件:   1.执行java.io.Serializable 接口 2.提供无参数的构造器 3.提供getter 和 setter方法访问它的属性. 简单地说,JavaBean是用Java语言描述的

Java listener简介_动力节点Java学院整理

1: 监听器的定义: 监听器实际上是一个类,这个类实现了特定的接口,然后将这个类在 web.xml 文件中进行描述,这样服务器在启动的时候就可以实例化这个类,启动监听器.当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法.例如统计用户在线人数. web监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext,HttpSession,ServletRequest等域对象的创建.销毁.以及属性的变化等,可以在事件发生前.发生后进行一些处理. 2.监听器的用途

Java Map简介_动力节点Java学院整理

Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如HashMap 类. 注:将可变对象用作映射键时必须格外小心.当对

Java Set简介_动力节点Java学院整理

1. 概述   Java 中的Set和正好和数学上直观的集(set)的概念是相同的.Set最大的特性就是不允许在其中存放的元素是重复的.根据这个特点,我们就可以使用Set 这个接口来实现前面提到的关于商品种类的存储需求.Set 可以被用来过滤在其他集合中存放的元素,从而得到一个没有包含重复新的集合. 2. 常用方法 按照定义,Set 接口继承 Collection 接口,而且它不允许集合中存在重复项.所有原始方法都是现成的,没有引入新方法.具体的 Set 实现类依赖添加的对象的 equals()

Java List简介_动力节点Java学院整理

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解.  List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引  ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步  LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)  Vector:底层是数组数据结构 线

Java国际化简介_动力节点Java学院整理

假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面--这便是典型的i18n国际化问题.对于有国际化要求的应用系统,我们不能简单地采用硬编码的方式编写用户界面信息.报错信息等内容,而必须为这些需要国际化的信息进行特殊处理.简单来说,就是为每种语言提供一套相应的资源文件,并以规范化命名的方式保存在特定的目录中,由系统自动根据客户端语言选择适合的资源文件. 基础知识 "国际化信息"

Java Properties简介_动力节点Java学院整理

Java中Properties类的操作 知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起. 一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件

Java分页简介_动力节点Java学院整理

什么是分页技术 分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不是全部数据,而是其中的一部分,如果在其中没有找到自习自己想要的内容,用户可以通过制定页码或是翻页的方式转换可见内容,直到找到自己想要的内容为止.其实这和我们阅读书籍很类似. 分页的意义 分页确实有效,但它一定会加大系统的复杂度,但可否不分页呢?如果数据量少的话当然可以.但是对于企业信息系统来说数据量不会限制在一个小范围内.如果不顾一切的Select * from某个表,再将返回的数据一古脑的扔给客户,即使客户能够忍受成千

Nginx简介_动力节点Java学院整理

1.什么是Nginx Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx.Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色.稳定的服务. Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证.由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自

Java中Object toString方法简介_动力节点Java学院整理

一.Object类介绍  Object类在Java里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object.所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗.所有的类,不管是谁,都是从它继承下来的. 二.toString方法介绍  一个字符串和另外一种类型连接

RandomAccessFile简介_动力节点Java学院整理

RandomAccessFile RandomAccessFile 是随机访问文件(包括读/写)的类.它支持对文件随机访问的读取和写入,即我们可以从指定的位置读取/写入文件数据. 需要注意的是,RandomAccessFile 虽然属于java.io包,但它不是InputStream或者OutputStream的子类:它也不同于FileInputStream和FileOutputStream. FileInputStream 只能对文件进行读操作,而FileOutputStream 只能对文件进