EL和JSTL语法

来源:互联网 发布:java转义html特殊字符 编辑:程序博客网 时间:2024/05/18 23:25
一、什么是EL表达式和JSTL标签
1、它们是在JSP页面用于显示Java数据(普通变量或者是对象的属性)的工具,和OGNL表达式和Struts标签的作用类似 。
二、EL表达式格式(把变量或对象存入作用域才能使用EL表达式,作用域只是对对象的引用,不会复制对象)
1、必须使用${ }来包装 。
2、例如页面定义了一个变量
<%
String username="zzl";
request.setAttribute("username",username);  //需要把变量存到作用域,否则不能使用
%>
那么使用EL表达式来显示这个变量的语法就是:${username} 或者 ${requestScope["username"]}或者 ${requestScope.username}
3、针对对象的属性可以这样表示,例如有一个对象实例Student student,该对象有一个name属性,则可以通过以下两种方式引用该属性:
${student.name} 或者 ${student[name]} 或者 ${requestScope. student[name]}  //requestScope.可以省略
4、引用数组元素的方式:  ${arry[0]} ,举例说明:
<%
   ArrayList<String> array = new ArrayList<String>();
   array.add("北京");
   array.add("广州");
   request.setAttribute("array", array);
%>
使用EL表达式取出第一个元素的语法是:${array[0]}
5、对于变量名中有点的对象就必须使用[]括起来,否则就会与访问对象属性混淆,例如:
<%request.setAttribute("student.username", "cch");%>
那么其对应的EL表达式是
${requestScope["student.username"]} //requestScope是变量的作用范围,也是必须的 。
6、EL表达式还可以进行运算(算术、逻辑、关系、条件运算[三目运算]、判空(${empty name})[结果是true or false])操作,举例说明:
<%
   int totalScore = 500;
   int subjectNum = 7 ;
   request.setAttribute("totalScore",totalScore);
   request.setAttribute("subjectNum",subjectNum);
%>
那么求其商的对应的EL表达式是:
${totalScore/subjectNum}
7、从A页面跳转的到B页面,对于表单的参数值(url中的参数)可以通过以下语句获得:
${param.参数名}
三、EL表达式的作用域搜索优先级
1、当EL表达式中的变量没有标明作用域的时候,程序就会根据以下顺序搜索并返回第一个找到的变量:
page->request->session->application
四、什么是JSTL标签
JSTL 是JSP标准标签库的 JSP Standard Tag Library 的简称 。
五、使用JSTL标签库的要求
1、把两个lib文件导入到Web项目中 。(jstl.jar 和 standard.jar)
2、在JSP页面的头元素加入如下指令:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、完成以上准备之后就可以使用JSTL标签 。
---------------------------------------
扩展知识:
JSTL标签库的其它类型
标签库名称                        资源标识符                         前缀
国际化/格式化标签库       http://java.sun.com/jsp/jstl/fmt            fmt
XML标签库                 http://java.sun.com/jsp/jstl/xml            xml
数据库标签库              http://java.sun.com/jsp/jstl/sql            sql
函数标签库                http://java.sun.com/jsp/jstl/functions      fn
六、JSTL标签介绍
1、<c:out>
------------------------
value 标签需要显示的值,可以是EL表达式或者字符串
default 默认显示的内容,当需要显示的内容不存在时可以替换显示
escapeXml 值为true(默认) 或者 false 为true的时候把html标签当字符输出。
------------------------
2、<c:set>
------------------------
var 设置的变量名
value 需要显示的变量内容,可以是普通文本或者EL表达式
scope 作用域范围
举例说明:
<c:set scope="request"  value="${totalScore/subjectNum}" var="aaa"></c:set>
使用${aaa}就可以输出${totalScore/subjectNum}的值
------------------------
3、<c:remove> 是针对set标签的,作用是移除变量
------------------------
var 需要移除的变量名
scope 变量的作用域范围
------------------------
4、<c:forEach>
------------------------
var 循环使用的变量名
items 需要循环的集合
varStatus 循环的状态信息,包含索引
举例说明:
<c:forEach var="arr" items="${array}" varStatus="state">
    ${state.count}从1开始的索引 ${state.index}从0开始的索引 ${arr}
</c:forEach>
-------------------------------------
5、<c:if>
-------------------------
test 判断条件
var  存放判断条件的结果
scope 作用域范围
举例说明:
<c:if test="${totalScore/subjectNum<100}" var="result" scope="request">
 <c:out value="${result}"></c:out>
</c:if>
----------------------------
6、<c:url>与<c:param>  用于构造超链接及其参数,相当于一个字符串,还是需要<a>配合
举例说明:
<c:url value="welcome.jsp" var="welcome" >
 <c:param name="id" value="100"></c:param>
</c:url>
<a href='${welcome}'>welcome</a>
----------------------------
7、<c:import>
url 需要导入的页面
举例说明:
<c:import url="welcome.jsp" ></c:import>
----------------------------
8、<fmt:formatDate>  把日期变量格式化输出
举例说明:
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH-mm-ss"/>
----------------------------
9、<fmt:formatNumber>
举例说明:
显示:$12.00
<fmt:formatNumber value="12" type="currency" pattern="$.00"/>  <br/>
显示:$12.0
<fmt:formatNumber value="12" type="currency" pattern="$.#"/> <br/>
¥12.0
<fmt:formatNumber value="12" type="currency" pattern="¥.00"/> <br/>
12.00元
<fmt:formatNumber value="12" type="currency" pattern="#0.00元"/> <br/>
¥12.00
<fmt:formatNumber value="12" type="currency"/>  (那个货币的符号和当前web服务器的 local 设定有关)<br/>
123456.79
<fmt:formatNumber value="123456.7891" pattern="#0.00"/>  <br/>
123,456.79
<fmt:formatNumber value="123456.7891" pattern="#,#00.00"/> <br/>
 .79
<fmt:formatNumber value="0.7891" pattern="#.00"/>  <br/>
12.34%
<fmt:formatNumber value="0.1234" type="percent" pattern="#0.00%"/><br/>
1,200%
<fmt:formatNumber value="12" type="percent"  /><br/>
1200.00%
<fmt:formatNumber value="12" type="percent" pattern="#0.00%"/><br/>

原创粉丝点击