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 }
结果如下: