今天刚开始学习JSTL,所以在这里总结一下今天学到的一些东西。
-
1.首先什么是EL表达式?
答:el的原名是:expression language
,用来实现代码的复用,同样一段逻辑代码,el表达式表示出来的就是比jsp
原型语言写出来的简单清晰。 -
2.JSTL四大标签分类有哪四大?
答:核心标签、格式化标签、SQL标签、XML标签,其中最重要的是核心标签,其他的地位次之 -
3.el标签具体的表示,即该如何在jsp页面中编写el表达式?
答:举例说明如下:<c:out value="常量或者变量“ ></c:out>
形如这样的代码就是一个典型的JSTL,中间的value就是el表达式;el表达式怎么写? 这样的例子就是一个el表达式:${sessionScope.name};
el表达式中可以用.来取值,也可以用[]来取值。那么两者有什么不一样的呢? -
4..和[]取值有什么区别和联系?
答:.和[]在大多数的情况下是通用的,但是除了两种情况下是只允许使用[]的;
a.当你取值的属性中包含特殊字符时,需要使用[],如:${user.first-name},这样就是错误的,应该使用
${user["first-name"]}切忌,这里需要加上双引号,是因为不加双引号,会将first-name当作常量来处理,
而不是一个变量。
b.当需要通过变量动态取值时需要使用[],如我需要一个变量接收我传过来的值,${user[param]} ,但是.只能是
具体的属性,如${user.age}、${user.sex}等这种确定的,遇到一个变量待传参数的量只能使用[].
[]也可以用于集合内部定位,如${booklist[0].price};这里的0需要定位于集合内部。 -
5.el表达式中还有一种简单直观的写法${name},那么它不会出错的原因是什么呢?
答:因为在el表达式中,取值是按照一定的顺序来的,它会先从最小的范围内开始查找,
page--->request--->session--->application.
当都找不到的时候,就会出现空字符串,即什么也不会输出来,这里不会有空指针异常报出,本来输出的应该是null,但是
这里做了优化,会输出空字符串。 -
6.el表达式还存在自动类型转换机制。如普通的jsp中从文本框中获取值的返回值类型
直接是String 类型的,当需要做算术运算时还是要进行类型转换,但是el表达式不需要,直接与数字相运算即可,如:
普通的jsp书写方式:
<% int count = Integer.parseInt(request.getPatameter("name"));
int sum = count+20;
%>
el表达式:${requestScope.name+20}
在上面的两种写法中可以看出来,当第一种在获取了文本框之中的值后还需要进行类型转换,比较麻烦,但是第二种只需要获取
就行,会根据后边的变量进行自动类型转换。
-
7.el表达式都有哪些隐式对象?
答:常用的四种:pageScope、requestScope、sessionScope、applicationScope四种对应于jsp中的page、request、session、application.
不常用的还有一些形如:cookie,header、headerValues等,分别表示cookie对象、header中存储的是http的头部的map集合等。 -
8.el表达式中还可以使用运算符吗?如果可以,能使用哪些运算符呢?
答:可以使用运算符.
a.算术运算符:+、-、*、/、mod等
b.比较运算符:==、!=、>、<等
c.逻辑运算符:&&、||、!
d.验证运算符: empty
下面分别举例说明一下怎么使用这些运算符:
a.<c:out value="${1+2}" ></c:out> //3
b.<c:out value="${a==b}" ></c:out> //true,如果在没有定义a,b变量时,它默认都是"",会返回true
c.<c:out value="${true && false}" ></c:out> //返回false
d.<c:out value="${empty name}" /> //如果name不为空,那么返回值返回false,如果name不存在,为null //或者空字符串均认为true
好啦,今天的总结就到这里,如果有什么不到之处还望指出。
网友评论