EL表达式+国际化开发

EL表达式:

小注:EL表达式在四个域中找不到对象时会返回一个" ",字符串,对全局没有任何影响!!

全名为Expression Language。EL主要作用:

1.获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,从各种类型的web域中检索Java对象

获取数据(某个web域中的对象,访问JavaBean的属性,访问jstl集合,访问数组)

2.执行运算:

利用EL表达式可以在JSP页面中执行一些简单的逻辑运算,${user==null}

3.获取web开发常用对象:EL表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松的获得对web常用对象的引用,从而获得这些对象的数据。

4.调用Java方法:

EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

获得web开发的常用对象:EL表达式语言定义了11个隐含对象,使用这些隐含对象可以很方便的获取web开发中的一些常见对象,并读取这些对象的数据。

语法:${隐式对象名称 }:获得对象的引用。

 EL表达式会先判断是否为隐式对象,若是隐式对象直接返回应用,若不是再从域中寻找:

TIP:获得web开发的常用对象:

pageContext:对应于JSP页面中的pageContext对象(注意取得时pageContext对象)

pageScope:代表page域中用于保存属性的Map对象

requestScope:代表request域中用于保存属性的Map对象

sessionScope:代表session域中用于保存属性的Map对象

applicationScope:代表application域中用来保存属性的Map对象

param:表示一个保存了所有请求参数的Map对象

paramvalues:表示一个保存了所有请求参数的Map对象,他对于某个请求参数,返回的时一个string[]数组

header:表示一个保存了所有http请求头字段的Map对象

headerValues:同上,返回string[]数组,注意:如果头里有“-”,例Accept-Encoding,则要headerValues[“Accept-Encoding”]

cookie:表示一个保存了所有cookie对象

initParam:表示一个保存了所有web应用初始化参数的map对象

TIP:使用EL调用Java方法

EL表达式语法允许开发人员自定义函数,以调用Java类的方法

示例:${prefix:method(params)}

在EL表达式中调用的只能是Java类的静态方法。

这个Java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用。

EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能。

EL函数无法移除与web相关的Java代码中的方法

SUN的EL函数库:(用来处理字符串找EL函数库)

TIP:JSTL中常用的EL函数:

由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对一些常见处理定义了一套EL函数库供开发者使用

这些EL函数在jstl开发包中进行描述,因此在JSP页面中使用SUN公司的EL函数库,需要导入jstl开发包,并在页面中导入EL函数库,如下图所示:

在页面中使用JSTL定义的EL函数;

<%@taglib uri="http//java.sun.com/jsp/jstl/funcitions" prefix="fn"% >

TIP:fn:toLowerCase:

将一个字符串中包含的所有字符转换成小写形式,并返回转换后的字符串,他接受一个字符串类型的参数。例如:

fn:toLowerCase:("WWW.IT315.org")的返回值为字符串"www.it315.org"

fn:toLowerCase:("")所返回的时一个空字符串。

TIP:fn:toLoUpperCase:

将一个字符串中包含的所有字符转换成大写形式,并返回转换后的字符串,他接受一个字符串类型的参数。例如:

fn:toUpperCase:("Www.IT315.org")的返回值为字符串"WWW.IT315.ORG"

fn:toUpperCase:("")所返回的时一个空字符串。

TIP:fn:trim:删除一个字符串的首尾空格,并返回删除空格后的结果字符串,他接收一个字符串类型的参数。需要注意的是,fn:trim函数不能删除字符串中间位置的空格。例如:

fn:trim("  www.it315.org")的返回值字符串为"www.it315.org"。

TIP:fn:lenth:

fn:lenth函数返回一个集合或数组大小,或返回一个字符串中包含的字符的个数,返回值为int类型。

fn:lenth函数接收一个参数,这个参数可以是<c:forEach>标签的iteams属性支持的任何类型,包括任意类型的数组、Java.util.iterator、Java.util.Map

Java.util.Collection、Java.util.Enumeration等类的实例对象和字符串。

如果fn:lenth:函数的参数为null或者是元素个数为0的集合或数组对象,则函数返回0;如果参数是空字符串,则函数返回0.

TIP:fn:split:

fn:split:函数以指定字符串作为分隔符,将一个字符串分割成字符串数组并返回这个字符串数组。

fn:split:函数接受两个字符串类型的参数,第一个参数表示要分割的字符串,第二个参数表示作为分隔符的字符串。例如:

fn:split("www.it315.org",".")[1]的返回值字符串"it315"。

TIP:fn:indexOf:

fn:indexOf:函数返回指定字符串在一个字符串中第一次出现的索引值,返回值为int类型。fn:indexOf:若后面有重复的字符串,fn:indexOf仅会返回第一次出现的索引值,若第一个参数中不包含第二个参数,则返回-1,若第二个为空字符串则返回0。例如:fn:indexOf("www.it315.org","t3")的返回值为5。

fn:contains:函数检测一个字符串中是否包含指定的字符串,返回值为布尔类型。比较时,大小写有影响,及对大小写是敏感的。

检测时,检测第一个字符串中是否存在第二个字符串,有返回true,否则返回false,第二个字符串若为空字符串,则返回值一直为true

小注:忽略大小写的EL函数:fn:containslgnoreCase.

 

 fn:startsWirh:用来检测以什么开头。

 fn:replace:替换。例如:

 fn:startsWirh("www it315 org","",".")的返回值为字符串:"www.it315.org".

 

fn:substring:用来截取数据。

fn:substringAfter:截什么字符的后面,返回字符串。

fn:substringBefor:截取什么字符之前,返回字符串。

国际化:

软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面数据。

国际化又称i18n

 

 

 

 

相关API

 

一、Locale 实例对象代表一个特定的地理,政治、文化区域。
(一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成。(若JDK中的某个类在运行时需要根据 Locale 对象来调整其功能,这个类就称为本地敏感类)

 

二、ResourceBundle类提供了一个静态方法getBundle,该方法用于装载资源文件,并创建ResourceBundle实例:

 

 

 

 

 

format:是将数字格式化为货币

parse:是将货币转换为数字

 

 

 

加载资源文件后, 程序就可以调用ResourceBundle 实例对象的 getString 方法获取指定的资源信息名称所对应的值。

Locale:本地化。(Java提供的一个本地特征的对象,国家,语言等)

代码如下:

 1 package junit.text;
 2 
 3 import org.junit.Test;
 4 
 5 import java.util.*;
 6 
 7  public   class Test_Demo1 {
 8 @Test
 9     public void test(){
10         Locale locale=Locale.CHINA;
11         
12         Locale locae=Locale.getDefault();
13         System.out.println(locale);
14         System.out.println(locae.getCountry());
15         System.out.println(locale.getDisplayCountry());
16         System.out.println(locale.getLanguage());
17         
18         
19         Locale locale2=Locale.US;
20         
21         System.out.println(locale2.getCountry());
22         System.out.println(locale2.getDisplayCountry());
23         
24         
25         
26     }
27     
28     
29 }

结果如下:

 

 

 

posted @ 2018-05-12 10:38  相伴红尘醉  阅读(229)  评论(0编辑  收藏  举报