1. EL表达式
-
什么是EL表达式,EL表达式的作用?
- EL表达式的全称是: Expression Language。是表达式语言。
- EL表达式的什么作用: EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。
jsp文件:
<% request.setAttribute("key", "key"); %> 表达式脚本输出key的值是: <%=request.getAttribute("key")%><br/> EL表达式输出key的值是:${key}
浏览器output:
-
EL表达式搜索域数据的顺序:
- EL表达式主要是在jsp页面中输出数据
- 主要是输出域对象的数据
- 当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
-
EL表达式输出复杂的JavaBean对象案例:
jsp文件:<h1>scope.jsp页面</h1> <% Person person = new Person(); person.setName("陈有为好帅"); person.setPhones(new String[]{"123456789"}); List<String> cities = new ArrayList<String>(); cities.add("北京"); cities.add("上海"); cities.add("深圳"); person.setCities(cities); Map<String, Object> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); person.setMap(map); request.setAttribute("person", person); %> 输出Person: ${person}<br/> 输出Person的name属性:${person.name}<br/> 输出Person的phones具体的元素值: ${person.phones[0]}
网页output:
2. EL表达式中4个隐含对象:
- EL表达式中自己定义的,可以直接使用
- pageScope: 它可以获取pageContext域中的对象
- requestScope: 它可以获取request域中的对象
- sessionScope: 它可以获取session域中的对象
- applicationScope: 它可以获取ServletContext域中的对象
3. JSTL标签库:
-
JSTL标签库, 全称是指JSP Standard Tag Library JSP标准标签库。EL表达式主要是为了替换jsp中表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更加简洁。
-
JSTL标签库的使用步骤:
- 先引入taglibs的jar包
- 使用taglibs导入标签库
-
core 核心库使用:
-
<c:set />
- 可以在域中保存数据
-
<c:if test=""></c:if>
jsp文件:
<h1>scope.jsp页面</h1> <%--test属性表示判断的条件(使用EL表达式输出)--%> <c:if test="${ 12 == 12}"> <h1>12等于12</h1> </c:if>
浏览器output:
- <c:choose>. <c:when> <c:otherwise>: 多路判断。跟switch … case… default非常接近
jsp文件:
<% request.setAttribute("height", 178); %> <c:choose> <c:when test="${requestScope.height > 190}"> <h2>很高</h2> </c:when> <c:when test="${requestScope.height > 180}"> <h2>高</h2> </c:when> <c:when test="${requestScope.height > 170}"> <h2>还可以</h2> </c:when> <c:otherwise> <h2>剩下小于170的情况</h2> </c:otherwise> </c:choose>
网页output:
- when标签的父标签一定要是choose标签
-
-
<c:forEach />
jsp文件:<%--1.遍历1到10--%> <c:forEach begin="1" end="10" var="i"> ${i} </c:forEach>
网页output:
-
<c:forEach />输出数组:
jsp文件:<% request.setAttribute("arr", new String[]{"12345678", "87654321"}); %> <c:forEach items="${requestScope.arr}" var="item"> ${item} <br> </c:forEach>
网页output: