EL:
EL是JSP简化表达式,说明白就是简化代码
标志为:${ },花括号中可以添加常量,变量,表达式,变量属性值等等
比较常用的是:判断是否为空
${empty ~},~处加上变量,空的话返回true
获取数据
①获取提交的表单的数据:接收表单的一方如果是一个值可以用${param. ~},~处为表单中标签的name;
多个值可以用${paramValues.~},~处为表单中标签的name数组,例如name[0],name[1].
②获取jsp通讯隐式对象的数据:${requestScope. ~}
以我的感觉来说,这种方法感觉是基于jsp隐式对象的属性使用的。上面这些只是最常用的。
EL获取的数据进行计算
value1与value2相乘:${value1*value2}
JSTL:
JSTL要比EL要复杂,但肯定比EL的功能多,一般与EL结合使用,在用之前,要先导入JSTL的标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
①c:out
<c:out value="value" escapeXml="true/false" default="defauleValue" />
<!-- value表示要输出什么内容,常量变量均可;escapeXml表示是否将
value的内容转义;
default表示value中没有值的时候输入什么。后两个属性可以不写-->
②c:set
<c:set value="zwq" var="name" />
<c:out value="${name}"/>
<!-- c:set类似于键值对,var是键,value是值;第二句是输出name的值-->
③c:remove
写法太简单了,就是c:set中的键值对去掉
作用是删除通讯对象中的属性
④c:if和c:choose
<c:if test="~" var="~">zwq</c:if>
<!-- test中放条件表达式,var中放判断的值的键,test中是true的话
输出zwq。
c:choose类似于switch不想多说。这两个东西感觉不太常用
-->
⑤(重点的来啦,个人感觉这是JSTL最好用的一个)
c:forEach:
<table border="1" bordercolor="red">
<tr>
<td>行号</td>
<td>数值</td>
<td>结果</td>
</tr>
<!-- 这里的var与前面的不同,在这里的作用是在<c:forEach>中使用,varStatus从我的感觉来说,是每一行的一个标记;
关于step、begin和end,举个例子 for(int begin=0;begin<=end;begin=begin+step){...} -->
<c:forEach var="x" varStatus="status" step="2" begin="0" end="10">
<tr>
<td><c:out value="${status.count }"></c:out></td>
<td><c:out value="${x }"></c:out>
</td>
<td><c:out value="${x*x }"></c:out></td>
</tr>
</c:forEach>
</table>
还有另外一种用法:
<%
List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 3; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("z", i + "");
list.add(map);
}
request.setAttribute("zwq", list);
%>
<!-- items是给c:forEach,一个list生成列表;这里也可以看出var到底有什么用,不多说自己体会吧。
只要有键值对,它就能自动生成列表,你说好用不好用 -->
<c:forEach items="${zwq }" var="zwq">
<c:out value="${zwq.z }"></c:out>
</br>
</c:forEach>