EL
表达式语言(EL),使用它可以轻松编写免脚本的JSP页面
1.使用
- 语法:EL表达式以${开头,并以}结尾
${expression}
- 关键字:
and eq gt true instanceof or ne le false empty not It ge null div mod
- []和.运算符:EL表达式可以返回任意类型的值。如果EL表达式的结果是一个带有属性的对象,则可以用[]或者.运算符来访问该属性。"[]"和 ".“运算符类似;[]是比较规范的形式,”."运算符更快捷
${object["propertyName"]}
${object.propertyName}
注意:如果要访问accept-language标题等propertyName不是有效java变量名,则只能用 "[]"运算符。
EL隐式对象
对象 | 描述 |
---|---|
pageContext | 当前JSP的pageContext |
initParam | 包含所有环境初始化参数,并用参数名作为key的Map |
param | 包含所有请求参数,并且参数名作为key的Map,返回第一个参数 |
param Values | 同上,但返回一个字符串数组 |
header | 包含请求标题,并用标题名作为key的Map |
headerValues | |
cookie | 包含了当前请求对象中所有Cookie对象的Map |
applicationScope | 包含了ServletContext对象中所有属性的Map |
sessionScope | 包含了HttpSession对象中所有属性的Map |
requestScope | 包含了HttpServletRequest对象中的所有属性 |
pageScope | 包含了全页面范围的所有属性的Map |
JSTL
- 首先要下载JSTL对应的jar包并导入项目
一般行为
- out标签
//第一种形式
<c:out value="${sessionScope.what}"/>
//第二种形式
<c:out value="${cookie.cookie.value}">
<%--body context--%>
</c:out>
- set标签
//赋值
<c:set var="uname" value="wintershii"/>
<c:set target="${employee}" property="name" value="张硕"/>
- remove标签
<c:remove var="uname"/>
条件行为
- if标签
//只有if
<c:set var="pwd" value="990708"/>
<c:if test="${pwd == '990708'}">
You Log In Successfully
</c:if>
//if,else
<c:if test="${cookie.cookie.value != 'shi'}" var="loginId"/>
${(loginId)? "You Log In Successfully" : "Login failed"}
- choose,when和otherwise标签
<form action="jstl.jsp" method="post">
信息:<input type="text" name="data" value="">
<input type="submit" value="提交">
</form>
<c:choose>
<c:when test="${param.data == '1'}">
你输入了1
</c:when>
<c:when test="${param.data == '2'}">
你输入了2
</c:when>
<c:otherwise>
哈啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
</c:otherwise>
</c:choose>
遍历行为
- forEach标签
<table>
<tr>
<td>书名</td>
<td>作者</td>
<td>出版时间</td>
</tr>
<c:forEach items="${requestScope.books}" var="book">
<tr>
<td>${book.name}</td>
<td>${book.author}</td>
<td>${book.date}</td>
</tr>
</c:forEach>
</table>