首页

源码搜藏网

首页 > 开发教程 > 软件工程 >

Java进阶学习第二十三天——国际化与AJAX、JSON

创建时间:2016-06-12 17:37  

文档版本 开发工具 测试平台 工程名字 日期 作者 备注
V1.0 2016.06.10 lutianfei none

国际化

固定文本元素的国际化

创建资源包和资源文件

Java进阶学习第二十三天——国际化与AJAX、JSON

资源文件书写格式

Java进阶学习第二十三天——国际化与AJAX、JSON



编程实现固定文本的国际化


编码演示
        ResourceBundle bundle = ResourceBundle.getBundle("message");        
        ResourceBundle bundle = ResourceBundle.getBundle("message",Locale.US);
* 获取:
    `bundle.getString(String name);`

* 扩展:关于properties文件中中文问题处理
    * 在jdk中有一个命令native2ascii.exe。
    * 1.进行一次翻译
        * `native2ascii` 回车
        * 中文  回车
    * 2.批量翻译
        * native2ascii  源文件路径   目录文件路径
        * 例如: native2ascii d:/a.txt  d:/a.properties


国际化的登录页面


日期国际化 DateFormat类

//无参数    
    DateFormat df1 = DateFormat.getDateInstance(); // 只有年月日
    DateFormat df2 = DateFormat.getTimeInstance(); // 只有小时分钟秒
    DateFormat df3 = DateFormat.getDateTimeInstance();// 两个都有


//有参数
    DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL); // 只有年月日
    DateFormat df2 = DateFormat.getTimeInstance(DateFormat.MEDIUM); // 只有小时分钟秒
    DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT);// 两个都有

//国际化
    DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL,Locale.US); // 只有年月日
    DateFormat df2 = DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.US); // 只有小时分钟秒
    DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.SHORT,Locale.US);// 两个都有


数字格式化 NumberFormat类

// 1.数值操作
@Test
public void fun1() {
    NumberFormat nf = NumberFormat.getIntegerInstance();

    String s = nf.format(19.98765);

    System.out.println(s);

}

// 2.查分比
@Test
public void fun2() {
    NumberFormat nf = NumberFormat.getPercentInstance(Locale.FRANCE);

    String s = nf.format(0.98);

    System.out.println(s);
}

// 3.货币
@Test
public void fun3() {
    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
    System.out.println(nf.format(1090));
}


动态文本国际化

@Test
public void fun2() {

    // At 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and
    // caused $1000000 of damage

    String msg = "At {0,time,short} on {0,date,long}, a hurricance destroyed {1,number,integer} houses and caused {2,number,currency} of damage";

    Calendar c = Calendar.getInstance();
    c.set(1998, 6, 3, 12, 30,0);

    Date date = c.getTime();

    MessageFormat mf = new MessageFormat(msg, Locale.US);

    String value = mf.format(new Object[] { date, 99, 1000000 });

    System.out.println(value);
}


AJAX

Java进阶学习第二十三天——国际化与AJAX、JSON


AJAX快速入门

    var xmlhttp=null;
    if (window.XMLHttpRequest)
     {// code for all new browsers
      xmlhttp=new XMLHttpRequest();
     }
    else if (window.ActiveXObject)
     {// code for IE5 and IE6
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }
    xmlhttp.onreadystatechange=function(){        

    };
    if(xmlHttp.readyState == 4){
        // 判断数据是否正确
        if(xmlHttp.status == 200){
            // 响应有效
            ...
        }
    }



ajax案例1–验证用户名是否可以使用

var xmlHttp = createXMLHttpRequest();
xmlHttp.onreadystatechange = function(){
    if(xmlHttp.readyState ==4 ){
    if(xmlHttp.status == 200){
        ...                                
        }
    }
};
xmlHttp.open("GET","checkUsernameusername="+username);
xmlHttp.send(null);


ajax案例2–显示商品信息

Java进阶学习第二十三天——国际化与AJAX、JSON

    <a href="javascript:void(0)" id="p">显示商品信息</a>
    <div id="d"></div>
* 在回调函数中得到服务器返回的信息innerHTML到div中.
    builder.append("<table border='1'><tr><td>商品编号</td><td>商品名称</td><td>商品价格</td></tr>");
    for (Product p : ps) {
        builder.append("<tr><td>" + p.getId() + "</td><td>" + p.getName()
                + "</td><td>" + p.getPrice() + "</td></tr>");
    }
    builder.append("</table>");

    <table border='1'>
        <tr>
            <td>商品编号</td>
            <td>商品名称</td>
            <td>商品价格</td>
        </tr>
        <c:forEach items="${ps}" var="p">
            <tr>
                <td>${p.id }</td>
                <td>${p.name }</td>
                <td>${p.price }</td>
            </tr>
        </c:forEach>
    </table>

    [{'id':'1','name':'洗衣机','price':'1800'},{'id':'2','name':'电视机','price':'3800'}]
    在js中{name:value,name1:valu1}这就是一个js对象.
    [{},{}]这代表有两个对象装入到了一个数组中。



Json入门


JSON应用场景

json-lib使用

        String[] arr = {"sada","fdssd","dfsd","sadas"};
        JSONArray jsonArray =  JSONArray.fromObject(arr);
        System.out.println(jsonArray.toString()); 
* 2) 将JavaBean/Map解析成JSON串:使用`JSONObject`
        Product p1 = new Product();
        p1.setName("三星手机");
        p1.setPrice(3999);

        JSONObject jsonObject = JSONObject.fromObject(p1);
        System.out.println(jsonObject);
* 3) 通过JsonConfig对象 配置对象哪些属性不参与转换 
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[]{"price"});

        JSONObject jsonObject = JSONObject.fromObject(p1, jsonConfig);
        System.out.println(jsonObject);

Java进阶学习第二十三天——国际化与AJAX、JSON


ajax操作中服务器端返回xml处理


基于xml返回数据Ajax省市联动

提供便捷注解
@XStreamAlias(别名) 对类和变量设置别名
@XStreamAsAttribute 设置变量生成属性
@XStreamOmitField 设置变量 不生成到XML
@XStreamImplicit(itemFieldName = “hobbies”) 设置集合类型变量 别名

使注解生效
xStream.autodetectAnnotations(true);

使用 xmlHttp.responseXML 接收解析成为 document对象


练习:省市级联

<title>ajax开发---json返回</title>

<script type="text/javascript"
    src="${pageContext.request.contextPath}/my.js"></script>

<script type="text/javascript">
    var jsonObj; //声明全局,因为要在多个函数中使用.
    window.onload = function() {

        var province = document.getElementById("province");//省份下拉框
        //第一步:得到XMLHttpRequest对象.
        var xmlhttp = getXmlHttpRequest();
        //2.设置回调函数
        xmlhttp.onreadystatechange = function() {

            //5.处理响应数据  当信息全部返回,并且是成功
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

                jsonObj = eval("(" + xmlhttp.responseText + ")");

                //得到省份名称

                for ( var i = 0; i < jsonObj.length; i++) {
                    var pname = jsonObj[i].name;

                    var option = document.createElement("option");
                    option.text = pname;

                    province.add(option);
                }

            }
        };

        //post请求方式,参数设置
        xmlhttp.open("GET", "${pageContext.request.contextPath}/ajax2");

        xmlhttp.send(null);

    };

    //创建一个函数,用于向城市下拉框中添加值.
    function fillCity() {

        var province = document.getElementById("province");//省份下拉框
        var city = document.getElementById("city");//城市下拉框.

        //每一次向城市中添加信息时,将信息重置。
        city.innerHTML = "<option>--请选择城市--</option>";

        var pname = province.options[province.selectedIndex].text;

        for ( var i = 0; i < jsonObj.length; i++) {
            var pElementName = jsonObj[i].name;

            if (pname == pElementName) {
                var citys = jsonObj[i].citys;

                for ( var j = 0; j < citys.length; j++) {

                    var cname = citys[j].name;

                    var option = document.createElement("option");
                    option.text = cname;

                    city.add(option);

                }
            }
        }

    }
</script>
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/xml;charset=utf-8");
        // 1.得到数据
        List<Province> ps = new ArrayList<Province>();

        Province p1 = new Province();
        p1.setName("黑龙江");
        List<City> citys1 = new ArrayList<City>();
        City city1 = new City();
        city1.setName("哈尔滨");
        City city11 = new City();
        city11.setName("齐齐哈尔");
        City city111 = new City();
        city111.setName("大庆");
        citys1.add(city1);
        citys1.add(city11);
        citys1.add(city111);

        p1.setCitys(citys1);

        Province p2 = new Province();
        p2.setName("吉林");
        List<City> citys2 = new ArrayList<City>();
        City city2 = new City();
        city2.setName("长春");
        City city22 = new City();
        city22.setName("吉林");
        City city222 = new City();
        city222.setName("四平");
        citys2.add(city2);
        citys2.add(city22);
        citys2.add(city222);

        p2.setCitys(citys2);

        ps.add(p1);
        ps.add(p2);

        // 转换成json
        String json = JSONArray.fromObject(ps).toString();

        response.getWriter().write(json);
        response.getWriter().close();
    }
1
0
   
上一篇:[数据结构] B(B-)树、B+树、B*树
下一篇:【编程马拉松】【013-最长句子】

相关内容

热门推荐