小生不才
未得姑娘青睐
扰姑娘良久
姑娘莫怪
此前所有爱慕之意止于唇齿
溺于年华
今生,就此别过
发表在 未分类 | 留下评论

JSON字符串解析

json支持的数据类型

JSON里面的数据是以一种键值对的方式存在(”key”,”value”)中的值的类型有以下几种:

  1. 数字(整数或浮点数)
  2. 逻辑值(true/false)
  3. 字符串(需要双引号)
  4. 数组(在方括号中)
  5. 函数
  6. 对象(在大括号中)
  7. null

JSON语法规则

  • 大括号———{}
  • 中括号———[]
  • 逗 号———,
  • 冒 号———:
  • 双引号———“”

数据类型:

嵌套对象、数组、字符串、数字、布尔值、空值

JSON解析

json中只有三种情况出现

  1. {} 解析‘大括号’类型 ———>使用JSONObject
  2. [] 解析‘中括号’类型 ———>使用JSONOArray
  3. 1、2的组合

1、纯对象JSON解析

/ 创建json字符串 用JSONObject解析
		String jsonStr = "{name:\"狗屎\",\"age\":\"20\",\"sex\":\"男\"}";
		/ 把json字符串转换为json对象
		JSONObject json = JSONObject.fromObject(jsonStr);
		/ 通过json对象.getString获取key对应的value
		System.out.println(json.getString("name"));
		System.out.println(json.getString("age"));
		System.out.println(json.getString("sex"));

2、纯数组解析

/ []方括号表示JSON数组 用JSONArray类解析
		String jsonStr_1 = "[{\"name\":\"张三\",\"age\":\"20\",\"sex\":\"男\"},{\"name\":\"李四\",\"age\":\"21\",\"sex\":\"女\"}]";
		JSONArray jsonArray = JSONArray.fromObject(jsonStr_1);
		System.out.println(jsonArray.size());
		for (int i = 0; i < jsonArray.size(); i++) {
			System.out.print(jsonArray.getJSONObject(i).getString("name") + "\t");
			System.out.print(jsonArray.getJSONObject(i).getString("age") + "\t");
			System.out.println(jsonArray.getJSONObject(i).getString("sex"));
		}

3、组合解析

String jsonStr_2 = "{success:0,errorMsg:\"错误信息\",data:{total:\"总记录数\",rows:[{id:\"任务id\",workName:\"任务名称\",assigneeName:\"经办人姓名\",name:\"流程步骤名称\",processInstanceInitiatorName:\"发起人\",processInstanceStartTime:\"发起时间\",createTime:\"到达时间\",dueData:\"截至时间\"},{id:\"id\",workName:\"名称\",assigneeName:\"经办人\",name:\"流程\",processInstanceInitiatorName:\"发起人\",processInstanceStartTime:\"发起\",createTime:\"到达\",dueData:\"截至\"}]}}";
		JSONObject json_group = JSONObject.fromObject(jsonStr_2);
		System.out.println(json_group.getString("success"));
		System.out.println(json_group.getString("errorMsg"));
		/ total是data对象值中的一个key
		System.out.println(json_group.getJSONObject("data").get("total"));
		/ 取出data对象
		JSONObject json_data = json_group.getJSONObject("data");
		/ rows是data对象中的一个数组
		JSONArray json_rows = json_data.getJSONArray("rows");
		for (int i = 0; i < json_rows.size(); i++) {
			System.out.println(json_rows.getJSONObject(i).getString("id"));
			System.out.println(json_rows.getJSONObject(i).getString("workName"));
			System.out.println(json_rows.getJSONObject(i).getString("assigneeName"));
			System.out.println(json_rows.getJSONObject(i).getString("name"));
			System.out.println(json_rows.getJSONObject(i).getString("processInstanceInitiatorName"));
			System.out.println(json_rows.getJSONObject(i).getString("processInstanceStartTime"));
			System.out.println(json_rows.getJSONObject(i).getString("createTime"));
			System.out.println(json_rows.getJSONObject(i).getString("dueData"));
			System.out.println("=======" + i + "========");
		}
发表在 未分类 | 标签为 | 留下评论

$.ajax() 方法详解

1.url

要求为String类型的参数 ,发送请求的地址(默认为当前页地址)

2.type

要求为String类型的参数,请求方式(post/get)默认get.

3.timeout

要求为Number类型的参数,设置请求超时的时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

4.async

要求Boolean类型的参数,默认为true,所有的请求均为异步请求。如果需要发送同步请求,将此项设置为false。注意:同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行操作

5.cache

要求类型为Boolean类型参数,默认为true ,设置为false将不会从浏览器缓存中加载请求信息

6.data

要求为Object或String类型参数,发送到服务器的数据。如果不是字符串,则自动转换为字符串。get请求中将附加哎url后。防止这种转换可以查看 processData选项.。对象必须为key/value格式 如{“name”:”123″} 如果是数组,则{“arr[]”:”数组”}

7.dataType

要求为String 类型的参数,预期服务器返回的数据类型

8.success:

要求为Function类型参数,请求调用成功后调用的回调函数,有两个参数

(1)由服务器返回,并根据dataTyep参数进行处理后的数据。

(2)描述状态的字符串

function(data,textStatus){

}

9.error

要求为Function类型的参数,请求失败时被调用的函数。该函数由3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象。

function(XMLHttpRequest,textStatus,errorThrown){
/通常情况下textStatus和errorThrown只有其中各异包含信息
this;/调用本次请求ajax请求时床i的的options参数
}


发表在 未分类 | 标签为 | 留下评论

JavaScript中绑定特定事件类型的方法

  • blur(): 失去焦点
  • focuns() 获得焦点
  • Change() 值改变
  • Click() 点击
  • Dblclick() 双击
  • Error() 遇到错误
  • Keydown() 键盘按下
  • Keyup() 键盘弹起
  • Keypress() 每插入一个字符都会触发(相当于Keydown 和 Keyup组合)
  • Load() 指定元素加载
  • Mousedown() 鼠标按下
  • Mouseup() 鼠标松开
  • Mousemove() 鼠标在元素中移动
  • Mouseout() 鼠标离开
  • Mouseove() 鼠标进入
  • Resize() 窗口大小改变
  • Scroll() 滚动指定元素
  • Select() 文本类型元素中文本被选择
  • Submit() 提交表单时触发(值适用于表单元素)
  • Unload() 离开页面

发表在 JavaScript | 标签为 | 留下评论

jQuery中的.html()和.text()及.val()的区别

.html() 读取和修改元素的HTML标签

.text() 读取或修改元素的纯文本内容

.val() 兑取或修改表单元素的value值

发表在 JavaScript | 标签为 | (845) 401-1062

JavaScript中innerHTML的用法

innerHTML在JS中是双向功能:获取对象的内容 或 向对象中插入内容;

举个栗子:<div id=’aa’> 这是内容</div>,可以通过document.getElementById(“aa”).innerHTML来获取id为aa的对象的内嵌内容;

也可以对某对象插入内容,如document.getElementById(“abc”).innerHTML=“被插入的内容”;这样就可以向id为abc的对象插入内容

发表在 9564965991 | 标签为 | (573) 707-8952

eclipse无法查看源码

进入你的Eclipse中,点击菜单栏中Windows,如下图

说明:所有已经安装了JDK的,在JDK所在的路径下面会有一个res的压缩包,只要设置Eclipse跟这个包关联起来 就可以查看源码。
查看源码最快捷方式,按住键盘ctrl键鼠标选择你想要查看源码的类或者方法名即可。


接着点击Preferences—>在接下来的窗口中找到java,并展开—->展开后找到Installed JRES并选择—->点击右侧jre—–>点击Edit按钮弹出窗口(Edit JRE)—–>找到C:\Java\jdk1.5.0_04\jre\lib\rt.jar”点击下面的
Source Attachment:(none)并选中——>
点击右侧窗口中的Source Attachment..—->选择External Location —->找到jdk下面的src.zip—>完成

发表在 Eclipse | 标签为 | (207) 593-0142

(302) 834-7886

String 有两种声明方式:

String st1 ="a";
String st2 =new String("a");
String st3 ="a";
String st4 =new String("a");


System.out.println(st1==st2); /----->false
System.out.println(st1==st3); /----->true;
System.out.println(st2==st4): /----->false;

st1和st3在编译过程中创建了字面常量和引用,字面常量放在常量池中(只保存了一份)。通过这种方式将String对象跟引用绑定,JVM执行引擎时会先在常量池中寻找相同的字面常量,如果有就直接将引用指向已存在的字面常量,否则就会在常量池中新建一个字面常量。

st2和st4是通过new关键字来生成对象,是在堆区进行的,而在堆区进行对象生成的过程中是不会去查找是否有该对象存在。所以通过new创建对象,创建出来的对象一定是不同的。即使字符串内容相同

StringBuffer、StringBuilder:


StringBuilder 与StringBuffer都继承自AbstractStringBuilder,该类的char数组并没有用final修饰,内容是可变的。StringBuffer继承了AbstractStringBuilder 类,在AbstractStringBuilder 类中的append()方法代码如下:

 public AbstractStringBuilder append(String str) {
        if (str == null)
            return appendNull();
        int len = str.length();
        ensureCapacityInternal(count + len);
        str.getChars(0, len, value, count);
        count += len;
        return this;
    }

StringBuilder 与StringBuffer都继承自AbstractStringBuilder,该类的char数组并没有用final修饰,内容是可变的,
通过底层代码我们可以看到StringBuilder 与StringBuffer在拼接字符串时,通过判断字符串长度是否足够,从而创建一个新的数组用来封装数据,而原来的对象被放弃引用,等待垃圾回收,从而减少内存的浪费,因此在拼接字符串等操作时,我们通常使用StringBuilder 与StringBuffer,但两者在执行效率上又有不同,StringBuilder的执行效率较高。StringBuilder 与StringBuffer的区别就是StringBuffer 有synchronized修饰,使用了同步锁。所以StringBuffer是线程安全类

区别:

String 在拼接字符串:

String a = "Hello";
String b = "World";
String c= a+b;

在以上过程中,String创建了三个对象,而且三个对象都在被引用,造成了资源的浪费。而StringBuffer 和 StringBuilder在拼接字符串时,会判断长度够不够,如果不够就会创建新的数组,把旧的数组弃用。节约资源。StringBuffer 安全性能低 而StringBuilder不安全性能高

发表在 未分类 | 标签为 | 450-848-6326

6174093373

服务器启动是(web.xml中配置的load-on-startup=1 默认是0)或者客户端第一次请求时,服务器会初始化一个Servlet对象,执行init(SrevletConfig conf)方法

该servlet对象去处理客户端的请求,在service(ServletRequest request,ServletResponse)无法识别,会请求 service(HttpServletRequest,HttpServletResponse)方法中执行,该方法会自动识别传递方式时get还是post

在服务器关闭时,销毁这个servlet对象,执行destroy()方法

发表在 705-812-5824 | 标签为 | 508-709-2098

Eclipse the user operation is waiting for “buiding workspace” to complete

在Build Android 工程的时候会遇到:the user operation is waiting for “buiding workspace” to complete问题,导致Eclipse假死,甚至造成系统假死,这是因为Eclipse要完成的工作太多了。解决步骤如下:

1.去掉Project——>BuildAutomatically的对勾

2重启Eclipse(必要的时候在任务管理器重启)

发表在 (214) 923-6239 | 标签为 | 772-657-3720