一 : EL简述
在jsp实际开发中,为了获取servlet域对象中存储的数据,经常需要书写很多java代码,这样做法会是jsp页面混乱.为此在JSP2.o
规范中提供了EL表达式.
EL->Expression Language
目的是为了使jsp写起来更加的简单明了,它提供了jsp中简化表达式的方法,让jsp的代码更加简化.
二 : EL内置对象
分类 | 内置对象名称 | 描述 |
---|---|---|
域对象 | pageScope | page域对象 |
域对象 | requestScope | request域对象 |
域对象 | sessionScope | session域对象 |
域对象 | applicationScope | application域对象 |
请求参数 | parm | 获得一个参数 |
请求参数 | parmValues | 获得一组参数 |
请求头 | header | 获得一个请求头 |
请求头 | headerValues | 获得一组请求头 |
JSP上下文对象 | pageContext | WEB开发中的pageContext. |
全局初始化参数 | initParam | 获取全局初始化参数 |
cookie | cookie | WEB开发中cookie |
其中
pageScope,requestScope,sessionScope,applicationScope
为获取jsp中域中的数据
param,paramValues
为获取参数,相当于
request.getParameter() ,
request.getParameterValues()
header,headerValues
为获取请求头信息,相当于request.getHeader(name)
initParam
为获取全局初始化参数,相当于this.getServletContext().getInitParameter(name)
cookie
为WEB开发中cookie
相当于request.getCookies()—cookie.getName()—cookie.getValue()
pageContext
WEB开发中的pageContext,pageContext获得其他八大对象,${pageContext.request.contextPath}
三 : EL 从域中取出对象
EL 最重要的作用是获取四大域的数据,格式为 : ${EL表达式}
例如 :
EL表达式:${requestScope.name}
① : EL获得PageContext域中的值 : ${pageScope.key};
② : EL获得request域中的值 : ${requestScope.key};
③ : EL获得session域中的值 : ${sessionScope.key};
④ : EL获得application域中的值 : ${applicationScope.key};
⑤ : EL域中获得某个值${key};
依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找
四 : EL执行表达式
- empty运算
<br>${user == null }
<br>${user != null }
<br>${empty user }
<br>${not empty user }
- 三元运算
<br>${user == null ? true : false }
- 算数运算符
${"1"+2 } 将字符串转换成数字,然后进行计算
${a+2 } a将从域中获得数据,如果没有为0
五 : JSTL简述
JSTL->JSP Standard Tag Library
,JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑代码,JSTL出现的目的和EL一样,就是要替代jsp页面中的脚本代码
标签库 | 标准库URL | 前缀 |
---|---|---|
Core | http://java.sun.com/jsp/jstl/core | c |
I18N | http://java.sun.com/jsp/jstl/fmt | fmt |
SQL | http://java.sun.com/jsp/jstl/sql | sql |
XML | http://java.sun.com/jsp/jstl/xml | x |
Functions | http://java.sun.com/jsp/jstl/functions | fn |
六 : JSTL导入
①在Apache的网站下载JSTL的JAR包。http://archive.apache.org/dist/jakarta/taglibs/standard/binaries – > 下载JSTL的安装包。jakarta-taglibs-standard-1.1.2.zip
,然后将下载好的JSTL安装包进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jar
和standard.jar
②导入 工程 lib中
③导入核心标签库
注意 : prefix
的值可以随便填写,但是几乎通常为上表的前缀.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
七 : forEach与if标签使用
( 一 ) forEach标签使用
- 模拟for循环
<c:forEach begin="0" end="5" var="i">
${i }<br>
</c:forEach>
- 获取遍历List
List<String> strList = new ArrayList<String>();
strList.add("百百");
strList.add("可可");
strList.add("思思");
request.setAttribute("strList", strList);
<c:forEach items="${strList}" var="str">
${str }<br>
</c:forEach>
- 获取遍历List<User>
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setUsername("雪雪");
user1.setPassword("123");
User user2 = new User();
user2.setUsername("美美");
user2.setPassword("456");
userList.add(user1);
userList.add(user2);
application.setAttribute("userList", userList);
<c:forEach items="${userList }" var="item">
${item.username}---${item.password }<br>
</c:forEach>
- 获取遍历Map
Map<String,String> strMap = new HashMap<String,String>();
strMap.put("name", "花花");
strMap.put("add", "月球");
strMap.put("sex", "女");
session.setAttribute("strMap", strMap);
<c:forEach items="${strMap }" var="item">
${item.key }-----${item.value }<br>
</c:forEach>
注意 :
varStatus
用于指定当前迭代状态信息的对象保存到page域中的名称
var
属性用于指当前迭代到的元素保存到page域中的名称
- varStatus使用
count
: 表示元素在集合中的序号,从1开始
index
: 表示当前元素在集合中的索引,从0开始
first
: 表示当前元素是否为集合的第一个元素
last
: 表示当前元素是否为集合的最后一个元素
<c:forEach begin="0" end="5" var="i" varStatus="status">
${i }<br>
${status.count }<br>
${status.index }<br>
${status.first }<br>
${status.last }<br> <hr>
</c:forEach>
(二)if标签使用
<c:if test="${1==1 }">
我真很帅.
</c:if>