EL表达式
为了尽量避免在前端HTML页面中增加Java代码,而提供的一种简单的数据访问语言。
基础语法 ${ 表达式 }
内置对象
插入Java代码
<%=pageContext.getAttribute(“foo”, PageContext.SESSION_SCOPE)%>
EL表达式
${pageContext.request.contextPath}
注意: 在调用内置对象的某些特殊属性时,书写方法有两种。- ${header.accept-Encoding} 错误
- ${header[‘accept-Encoding’]} 正确
EL表达式获取数据
获取自定义数据(自定义的数据必须放入域中,否则无法访问到)
<% String str = "Jack"; pageContext.setAttribute("name", str); %> ${pageScope.name}
获取数组
<% String[] arr = {"Java", "PHP", "Python", "JavaScript"}; // 将数组放入指定域中 pageContext.setAttribute("arr", arr, PageContext.REQUEST_SCOPE); %> ${requestScope.arr[0]} ${requestScope.arr[1]} ${requestScope.arr[2]} ${requestScope.arr[3]}
获取List
<% List<String> list = new ArrayList<>(); list.add("One"); list.add("Two"); list.add("Three"); pageContext.setAttribute("list", list, PageContext.PAGE_SCOPE); %> ${list}
获取Map
<% Map<String, String> map = new HashMap<>(); map.put("name", "Tom"); map.put("age", "20"); pageContext.setAttribute("map", map); %> ${map.name}
EL运算符
算数运算符
${1+1} ${2-3} ${5 div 2} ${5 mod 2} ${'10' + 2} <%--不能作为字符串拼接--%> <%--${"I" + "Love" + "You"}--%>
逻辑运算符
<%--等于,也可使用 == --%> ${1 eq 1} <%--不等于,!= --%> ${1 ne 1} <%--小于, < --%> ${2 lt 1} <%--大于, > --%> ${2 gt 3} <%--小于等于, <= --%> ${2 le 3} <%--大于等于, >= --%> ${2 ge 1}
关系运算符
<%--与, 也可以用 and--%> ${true && false} <%--或, or--%> ${true || false} <%--非, not--%> ${!false}
三元运算符 和 empty 运算符
${ 1 == 1 ? true : false} ${empty user} ${!empty user}
JSTL
Java standard tag library Java标准标签库
使用JSTL
- 引入两个所需要的包
在JSP页面中应用
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
测试 (页面输出 This is a test)
<c:out value="This is a test"></c:out>
- 引入两个所需要的包
Core 标签库
if 标签
<%--设置visitCount 变量的值为 1--%> <c:set value="1" var="visitCount" property="visitCount"></c:set> <%-- test: 设置判断条件 var: 指定逻辑表达式中变量的名字 scope: 指定var变量的作用域,默认为page 如果test中结果为true,则会输出标签中的内容 --%> <c:if test="${visitCount == 1}" var="visitCount" scope="request"> visit ${visitCount} </c:if>
forEach 标签
<%-- var: 当前集合中的元素 items: 被遍历的对象 begin: 起点 end: 结束 step: 步长 status: 元素的状态信息 --%> <c:forEach var="item" items="${arr}" begin="1" step="1" end="3" varStatus="status"> <tr> <td>${status.count}</td> <td>${status.index}</td> </tr> ${item}<br> </c:forEach>