JSP总结(三)

上接JSP总结(二)

Ⅲ.XML标签库 <x:…>

1.XML(Extensible Markup Language)可扩展标记语言,与HTML(Hypertext Markup Language的区别是:

<1>所有标签必须关闭,而HTML中如<hr>不关闭;

<2>大小写敏感;

<3>必须正确嵌套,否则不能解析;

<4>必须有一个根元素;

<5>属性值必须加引号.

如:book.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<books>

<book isbn="23421">

<title>Java</title>

<author>z3</author>

<price>23</price>

</book>

<book isbn="23432">

<title>Javascript</title>

<author>w5</author>

<price>20</price>

</book>

</books>

2.Xpath:在XML文档中查找信息的语言。

3.在.jsp上xml文档,有以下几种方式:

<1>外部导入:

<!-- 外部导入xml文档 -->

<c:import url="books.xml"var="xmldoc"></c:import>

<!-- 解析xml -->

<x:parse doc="${xmldoc}"var="doc"></x:parse>

<!-- 返回结果集中的第一个元素的字符串 -->

<x:out select="$doc//book"/>             <!-- 注意此处不能加大括号 -->

<2>直接写在解析标签内部:

<x:parse var="doc">

<%@ include file="books.xml"%>

</x:parse>

<!-- 返回结果集中的第一个元素的字符串 -->

<x:out select="$doc//book"/>             <!--注意此处不能加大括号 -->

 

Ⅳ.Function标签库 <fn:…>

如:

${fn:toLowerCase("USA")}<br>

${fn:substring('I am astudent',2,4)}<br> <!--从位置2开始到位置4之前的字符串 -->

${fn:substringAfter('Iam a student',"am")}<br>      <!-- am后的字符串 -->

<%

String[] arr={"a","b","c"};

request.setAttribute("arr", arr);

%>

${fn:join(arr,":")}  <br>                 <!-- 将字符数组内的字符之间用指定的符号连接起来-->

${fn:escapeXml('<a>fd</a>')}<br>          <!-- 转义为实体 -->

 

Ⅴ.国际化<fmt:…>

1、国际化(internationalization,简称”i18n”):程序员要做的

本地化(localization,简称”l10n”):用户

2、要唯一标示一个文化区域:语言+国家(区域)

如:中国(内地)   zh_CN

美国                 en_US

英国                 en_GB

3、国际化的步骤:

<1>新建相应国家(地区)的属性文件(.properties),建在src文件夹下,添加属性名(name)和属性值(value).

如:

新建msg_zh_CN.properties和msg_en_US.properties文件,

.jsp文件相应代码如下:

<%

request.setAttribute("now", new Date());

%>

<!-- 设置区域 -->

<fmt:setLocale value="en_US"/> 

<!-- 设置基本名:包名+属性文件的前缀名 -->         

<fmt:bundle basename="i18n.msg">  

<!—读取相应的属性值-à     

<fmt:message key="login.name">

</fmt:message><br>

<fmt:message key="login.time">

<fmt:param value="${now}"></fmt:param>

</fmt:message>

</fmt:bundle>

 

<h1>简化key的书写</h1>

<fmt:setLocale value="${fn:substringBefore(header['Accept-Language'],',')}"/>

<fmt:bundle basename="i18n.msg"prefix="login">

<fmt:message key=".name">

</fmt:message><br>

<fmt:message key=".time">

<fmt:param value="${now}"></fmt:param>

</fmt:message>

</fmt:bundle>

 

<h1>第二种设置资源文件的方法 setBundle</h1>

<fmt:setBundle var="bu" basename="i18n.msg"/>

<fmt:message key="login.name"bundle="${bu}">

</fmt:message><br>

<fmt:message key="login.time"bundle="${bu }">

<fmt:param value="${now}"></fmt:param>

</fmt:message>

4.国际化数字

<!-- 货币 -->

<fmt:setLocale value="zh_CN"/>

<fmt:formatNumber value="2000"type="currency"></fmt:formatNumber><br>

<fmt:setLocale value="en_GB"/>

<fmt:formatNumber value="2000"type="currency"></fmt:formatNumber><br>

<fmt:setLocale value="en_US"/>

<fmt:formatNumber value="2000"type="currency"></fmt:formatNumber><br>

</body>

<!-- 数字 -->

<fmt:setLocale value="zh_CN"/>

<fmt:formatNumber value="2000"type="number"></fmt:formatNumber><br>

<fmt:setLocale value="en_GB"/>

<fmt:formatNumber value="2000"type="number"></fmt:formatNumber><br>

<fmt:setLocale value="en_US"/>

<fmt:formatNumber value="2000"type="number"></fmt:formatNumber><br>

<!-- 百分比 -->

<fmt:setLocale value="zh_CN"/>

<fmt:formatNumber value="2000"type="percent"></fmt:formatNumber><br>

<fmt:setLocale value="en_GB"/>

<fmt:formatNumber value="2000"type="percent"></fmt:formatNumber><br>

<fmt:setLocale value="en_US"/>

<fmt:formatNumber value="2000" type="percent"></fmt:formatNumber><br>

5.国际化日期

<%

request.setAttribute("now", new Date());

%>

<fmt:setLocale value="zh_CN"/>

<fmt:formatDate value="${now}"type="both" pattern="yyyymmdd hh:mm:ss"/><br>

 

<fmt:setLocale value="en_GB"/>

<fmt:formatDate value="${now}"type="both" /><br>

 

<fmt:setLocale value="en_US"/>

<fmt:formatDate value="${now}"type="both" /><br>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值