栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaweb学习之json、AJAX、i18n

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaweb学习之json、AJAX、i18n

JSON

json(Javascript Object Notation),一种轻量级的数据交换格式。易于人阅读和编写,易于机器的解析和生成。JSON采用完全独立于语言的文本格式,是一种理想的数据交换语言。

轻量级的数据交换格式:
轻量级即与xml作比较。数据交换是指客户端和服务器之间业务数据的传递格式。

JSON 在 Javascript中的使用 1、Json的定义

又键值对组成,由{}包围,每个键由引号引起来,键和值之间使用冒号分割,多组键值对之间使用逗号分割。

	var obj = {
				"key1":11,//数组
				"key2":"11",//字符串
				"key3":[1,"11",[1,2]],//数组
				"key4":{
					"key4_1":11,
					"key4_2":"11",
					"key4_3":[1,"11",[1,2]],
				},//json
				"key5":[{
					"key5_1": 11,
					"key5_2": "11",
					"key5_3": [1, "11", [1, 2]],
				},
					{"key5_11":11,
					"key5_22":"11",
					"key5_33":[1,"11",[1,2]],
			},
				],//json数组
			}
			alert(typeof(obj));//object
2.json的访问

json本身是一个对象(object),使用对象.属性来访问json

3.json的两个常用方法

json以对象(json对象)和字符串(json字符串)两种形式存在。
JSON.stringify() json对象–>>>json字符串
JSON.parse() json字符串---->>json对象
操作json数据时,需要json对象;在客户端和服务器之间进行数据交换时,使用jso字符串。

json在java中的使用 javabean和json的转换
  @Test
    //json对象和javabean对象的转换
    public void test1(){
        Student stu = new Student(1,"heihei");
        Gson gson = new Gson();
        //json对象===>>>java对象
        String stugsonString = gson.toJson(stu);
        System.out.println(stugsonString);
        //json字符串 转换后的java对象类型
        //java对象==>>json对象
        Student gson1 = gson.fromJson(stugsonString, Student.class);
        System.out.println(gson1);

    }
list和json的转换
@Test
    public void test2(){
//list和json对象的转换
        Gson gson = new Gson();
        List list = new ArrayList();
        list.add(new Student(2,"haha"));
        list.add(new Student(3,"hehe"));
        String json1 = gson.toJson(list);
        System.out.println(json1);
        List list1 = gson.fromJson(json1, new StudentListType().getType());
      //  List list1 = gson.fromJson(json1, list1.getClass());
      //对于后期的jdk已经优化了这种方法无法访问,虽然获取的list1存储的是hash值
      
        System.out.println(list1);
        System.out.println(list1.get(0));
    }
public class StudentListType extends TypeToken> {
//StudentListType类
}

map和json的转换
    @Test
    //map和json的相互转换
    public void test3(){
        Gson gson = new Gson();
        Map map = new HashMap<>();
        map.put(1,new Student(1,"aa"));
        map.put(2,new Student(2,"bb"));
        String json1 = gson.toJson(map);
        
        System.out.println(json1);
Map map1 =         gson.fromJson(json1,new TypeToken>(){}.getType());
     //使用匿名内部类,不需要每次new的时候都再写类
        System.out.println(map1);
        System.out.println(map1.get(1));

    }
AJAX请求

***Asychronous Javascript And Xml***异步javascript和xml,一种创建交互式网页应用的网页开发技术。
ajax是一种浏览器通过js异步发起请求,局部页面更新的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
局部更新:
浏览器地址栏不会发生变化
原来页面内容没有被舍弃。

原生Ajax请求的实例
    protected void AjaxTest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("ajax收到了请求");
        Student stu = new Student(1, "ll");

        Gson gson = new Gson();
        String stu1 = gson.toJson(stu);//javabean===>>>json字符串
        resp.getWriter().write(stu1);
    }
		
jQuery中的Ajax请求

$.ajax方法
url 请求的地址
type 请求的类型(Get/Post)
data 发送给服务器的数据
一、name=value&name=value
二、{key:value}
success 请求成功,响应的回调函数
dataType 服务器返回(响应)的数据类型
text(纯文本)、xml、json(json对象)

    protected void ajaxTest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//jquery封装
        System.out.println("ajaxTest收到了请求");
        Student stu = new Student(1, "ll");

        Gson gson = new Gson();
        String stu1 = gson.toJson(stu);//javabean===>>>json字符串
        resp.getWriter().write(stu1);
    }
	$(function(){
				// ajax请求
				$("#ajaxBtn").click(function(){
					$.ajax({
						url:"http://localhost:8080/10_JSON_AJAX_I18N_war_exploded/testServlet",
						type:"GET",
						data:"action=ajaxTest",
						// data:{action=ajaxTest},
						success:function (msg){
							alert(msg)
							// var msgobj = JSON.parse(msg)
							// $("#ajax").html(msgobj.name+"+"+msgobj.id)

						},
						// dataType:"text",

						dataType:"json",
					});

. g e t 方 法 和 .get方法和 .get方法和.post方法
url 请求的地址
data 发送给服务器的数据
callback请求成功,响应的回调函数
type 服务器返回(响应)的数据类型

$.get("http://localhost:8080/10_JSON_AJAX_I18N_war_exploded/testServlet","action="getTest",function(data){
 $("#ajax").html(data.name+"+"+ data.id);},json);
 });


$.post("http://localhost:8080/10_JSON_AJAX_I18N_war_exploded/testServlet","action="getTest",function(data){
 $("#ajax").html(data.name+"+"+ data.id);},json);
 });

$.getJSON方法
url 请求的地址
data 发送给服务器的数据
callbacj=k请求成功,响应的回调函数

$.post("http://localhost:8080/10_JSON_AJAX_I18N_war_exploded/testServlet","action="getTest",function(data){
 $("#ajax").html(data.name+"+"+ data.id);},json);
 });

表单序列化 serialize()
可以把表单中所有表单项的内容都获取到,并以name=value&name=value的格式拼接返回

i18n 国际化

Internationalization i18n

Local对象

表示不同的时区、位置、语言。zh_CN,en_US.

Properties属性配置文件

国际化文件命名规则:baseName+locale.properties
中文:i18n_zh_CN.properties
英文:i18n_en_US.properties

ResourceBundle资源包

ResourceBundle.getBundle()
根据给定的baseName和Locale读取相应的配置文件。
ResourceBundle.getString(key);得到不同国家的语言信息
基础代码示例

        //得到默认的语言 zh_CN
        Locale locale = Locale.getDefault();
        System.out.println(locale);

        for(Locale locale1:Locale.getAvailableLocales()){
            //得到可用的全部语言
            System.out.println(locale1);
        }
//获取中文的常量locale对象
        System.out.println(Locale.CHINA);
//        zh_CN
        //获取英文的常量Locale对象
        System.out.println(Locale.US);
//                en_US

  @Test
    public void test1() throws  Exception{
        Locale locale = Locale.US;
        //得到需要的locale对象
//        Locale locale = Locale.CHINA;
 //通过置顶basename和Locale对象读取相应的配置文件
        ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale);
//        System.out.println(bundle.getString("username"));
        String value1 = new String(bundle.getString("username").getBytes("ISO-8859-1"), "GBK");
String value2 = new String(bundle.getString("password").getBytes("ISO-8859-1"),"GBK");
//解决ResourceBundle。getString的乱码问题 注意两个转换的字节编码类型
        System.out.println(value1);
        System.out.println(value2);
    }

String value2 = new String(bundle.getString(“password”).getBytes(“ISO-8859-1”),“GBK”);//改善乱码

//i18n_zh_CN.properties
username=用户名
password=密码
//i18n_en_US.properties
username=username
password=password
使用JSTL输出国际化
  1. 导入jar包。
  2. 加入头文件
<%@ taglib prefix="fmt" url="http://java.sun.com/jsp/jstl/fmt" %>
  1. 使用标签设置locale
//根据传入的参数得到locale对象



我理解的i18n:对于网页上的某些属性,需要中文、英文、日文等的翻译,可以使用i18n,需要在配置文件写出所需的属性对应语言的键值对,根据浏览器的设置或者参数的传入来改变locale对象,从而改变bundle中的属性值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号