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