学习笔记十二(AJax和JSON)

Ajax

简介

Asynchronous JavaScript And XML,直译为,异步的JS和XML。

  • AJAX也可以简单的理解为通过JS向服务器发送异步请求。
  • 不发生页面跳转、异步载入内容并改写页面内容的技术。

异步请求&同步请求
同步处理问题;

  1. 请求:发送二次请求时,只能等上次请求响应后,才能执行
  2. 效率:就算我们需要刷新局部,也必须刷新整个页面

异步解决问题

  1. 请求:aJax请求不会影响其他请求
  2. 效率:局部刷新

使用

js->ajax(基本不怎么使用了)
jQuery->ajax(常用)

语法

	$.ajax({
   type: "请求方式:get|post",
   url: "请求路径",
   data: "参数",
   dataType:预期服务器返回的数据类型,如:xml|json|text
   success:fn(回调函数:请求成功时回调),
   error:fn(回调函数:请求失败时回调)
});

Ajax简写
$.post(url, [data], [callback], [dataType])
$.get(url, [data], [callback], [dataType])
$.getJSON(url,[data],[callback]);

$(function(){
			
	$("#btn").click(function(){
		
		$.post("AjaxDemo","name=John&location=Boston",function(){
			 alert( "Data Saved: " );
		});
		$.ajax({
		   type: "POST",
		   url: "AjaxDemo",
		   data: "name=John&location=Boston",
		   success: function(msg){
		     alert( "Data Saved: " + msg );
		   }
		});
	});
			
	$("#btnGet").click(function(){
		//var json = {key:value,key2:value2,key3:value3}
		$.getJSON("AjaxDemo",{"name":"zhangsan","age":18},function(msg){
			alert("msg:"+msg.name);
		});
				
// 				$.get("AjaxDemo",{"name":"zhangsan","age":18},function(msg){
// 					alert("msg:"+msg.name);
// 				},"json");
				
// 				$.ajax({
// 					type:"get",
// 					url:"AjaxDemo",
// 					data:{"name":"zhangsan","age":18},
// 					dataType:"json",
// 					success:function(msg){
// 						alert("msg:"+msg.name);
// 					},
// 					error:function(){
// 						alert("error!!!");
// 					}
// 				});
				
			});
			
	});

JSON

简介:

JavaScript Object Notation 的缩写,是JS提供的一种数据交换格式。

JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。

使用

Gson gson = new Gson()

常用方法

  • String toJson(Object o)
  • fromJson(String jsonStr,Class)
  • fromJson(String jsonStr,Type)
    • Type获取方式
      • new TypeToken<List>() {}.getType()
@Test
	public void testJsonStrObject() {
		Gson gson = new Gson();
		Student stu = new Student("zs", 18);
		//student->jsonString 
		String jsonStr = gson.toJson(stu);//{"name":"zs","age":18}
		System.out.println(jsonStr);
		//jsonString->student
		Student student = gson.fromJson(jsonStr, Student.class);
		System.out.println(student);
	}
	
	@Test
	public void testJsonStrList() {
		List<Student> stuList = new ArrayList<>();
		stuList.add(new Student("zs", 18));
		stuList.add(new Student("lisi", 19));
		//stuList->jsonString
		Gson gson = new Gson();
		String jsonStr = gson.toJson(stuList);//[{"name":"zs","age":18},{"name":"zs","age":18}]
		System.out.println(jsonStr);
		//jsonString->List<Student>
//		List<Student> list = gson.fromJson(jsonStr, List.class);
//		System.out.println(list.get(0));
		//使用typeToken
		List<Student> list = gson.fromJson(jsonStr, new TypeToken<List<Student>>() {}.getType());
		System.out.println(list.get(0).getName());
	}
	
	@Test
	public void testJsonStrMap() {
		Map<String,Student> map = new HashMap<>();
		map.put("zs", new Student("zs", 18));
		map.put("ls", new Student("ls", 20));
		//map -> jsonString
		Gson gson = new Gson();
		String jsonString = gson.toJson(map);//{{"zs":{"name":"zs"},"age":18},{"ls":{"name":"ls"}}
		System.out.println(jsonString);
		//jsonString-> map
		Map<String,Student> mapStu = gson.fromJson(jsonString, new TypeToken<Map<String,Student>>(){}.getType());
		
		System.out.println(mapStu.get("zs").getAge());
	}

文件的上传和下载

文件上传&下载

文件上传

准备:

  1. 导入commons-fileupload-1.3.1.jar和commons-io-2.5.jar两个jar文件
  2. form属性 method=“post”
  3. enctype=“multipart/form-data”
  4. <input type=“file” name=“fileupload”>
  • 步骤如下
  1. 创建工厂类:DiskFileItemFactory
  2. 创建解析器ServletFileUpload
  3. 使用解析器中parseRequest(request)方法,将request对象解析为List
  4. 迭代集合,找到文件类型为File的FileItem
  5. 使用FileItem中的write()方法,写到服务器。

优化文件上传

  • 使用UUID优化同名无法上传问题

    • String uuid = UUID.randomUUID().toString().replace("-", “”);
  • 设置上传文件的大小

    • 设置单个文件的上传大小:upload.setFileSizeMax(2*1024);
    • 设置总文件的上传大小:upload.setSizeMax(2*1024);
文件下载

准备:

  • 超链接<a href="资源路径>资源
  • 下载Servlet
  1. 获取下载资源

    • 获取下载资源的名字
    • 通过名字获取资源真实路径
  2. 文件下载设置项

    • 设置浏览器响应体文件类型
    • 解决文件名中文乱码问题
    • 设置浏览器响应体内容格式,为附件格式。(告诉浏览器别播放,下载)
  3. 读取目标资源,同时写到客户端(下载)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值