El常规用法: 2016年5月4日
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>.和[]等效 后者主要考虑到特殊符号的参数和动态获取
${sessionScope.name}=${sessionScope["name"]}
${sessionScope.list[n]}
随意一个变量,可从当前页面寻找,page找不到,就会Request、session、application范围寻找
jsp中内置对象名称 El中
page pageScope
request requestScope
session sessionScope
application applicationScope
${范围.变量名} 取出范围内变量的值
El隐含对象
pageContext javax.servlet.ServletContext表示JSP的pageContextpageScope page范围的属性名称所对应的值
request requestScope范围的属性名称所对应的值
session sessionScope范围的属性名称所对应的值
application applicationScope范围的属性名称所对应的值
param 同request.getParameter(String name)
paramValues 同getParameterValues(String name)回传数组
header 同request.getHeader(String name)返回String类型的值
headerValues 同request.getHeaders(String name)回传数组
cookie 同request.getCookies()
initParam 同request.getInitParameter(String name)
比较字符:
<||lt 小于>||gt 大于
<=||le 小于等于
>=||ge 大于等于
==||eq 等于
!=||ne 不等于
13个标签,功能分四类
表达式控制标签:out、set、remove、catch
流程控制标签:if、choose、when、otherwise
循环标签:forEach、forTokens
URL操作标签:import、url、redirect
out
<c:out value="hellow" /><%String s="hellow";
request.setAttribute("s", s);
%>
<c:out value="${s }" default="s" ></c:out>
set
<% User user=new User();request.setAttribute("user", user);
%>
<c:set target="${user }" property="uname" value="hello" />
<c:out value="${user.uname }" default="暂无"></c:out>
remove
msg=<c:out value="${msg }" default="null" /><br /><c:set var="msg" value="hellow" scope="page" />
msg=<c:out value="${msg }" default="null" /><br />
<c:remove var="msg" scope="page"/>
msg=<c:out value="${msg }" default="null" /><br />
msg=null
msg=hellow
msg=null
catch
<c:catch var="error"><!-- 容易异常部分 -->
</c:catch>
${error }
if
<c:if test="${1==1 }" var="name" scope="page">真才出现啊
</c:if>
${name }
choose when otherwise
<% session.setAttribute("score", 20); %><c:choose>
<c:when test="${score<60 }">不及格</c:when>
<c:when test="${score>60 }">及格</c:when>
<c:otherwise>刚好及格</c:otherwise>
</c:choose>
forEach
<% List<User> list=new ArrayList<User>();User u1=new User("s","d","f");
User u2=new User("s","d","f");
User u3=new User("s","d","f");
User u4=new User("s","d","f");
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
session.setAttribute("s", list);
%>
//开始||结束||步长||状态属性
<c:forEach var="s" items="${s }" begin="1" end="1" step="1" varStatus="a">
${s.uid }<br />
${s.uname }<br />
${s.upassword }<br />
输出行号(从0开始):${a.index }<br />
输出行号(从1开始):${a.count }<br />
当前迭代的项 :${a.current }<br />
判断当前项是否为第一项:${a.first }<br />
判断当前项是否为第一项:${a.last }<br />
</c:forEach>
Map
<% Map map=new HashMap();map.put("k1", "v1");
map.put("k2", "v2");
session.setAttribute("s", map);
%>
<c:forEach var="s" items="${s }" varStatus="a">
${s.key }<br />
${s.value }<br />
</c:forEach>
forTokens
//值||分隔符||状态属性<c:forTokens items="ww-wwwww-wwwww-wwww-wwwwww" delims="-" var="t" varStatus="a">
${t }<br />
${a.count }
<br />
</c:forTokens>
import
//导入页面<c:import url="/1.jsp" var="s"></c:import>
${s }
url
//路径<c:url value="/2/11.jsp" scope="page" var="a22"></c:url>
<a href="${a22 }" >ww</a>
redirect
//重定向,一般和if一起使用<c:redirect url="1.jsp"></c:redirect>//直接同目录
<c:redirect context="/w" url="/1.jsp" ></c:redirect>
context最初的地方/w
出现它时候需要以/开头、url也要以/开头、最终会去/w/1.jsp
EL函数标签:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>fn:substring
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>原来得到的:${w}<br />
截取得到的:${fn:substring(w, 0, 16)}
原来得到的:2006-11-12 11:22:22.0
截取得到的:2006-11-12 11:22
fn:length
<%String[] w={"w","d"};
session.setAttribute("w", w); %>
原来得到的:${w[0]}、${w[1]}<br />
数组的长度:${fn:length(w)}
原来得到的:w、d
截取得到的:2
fn:contains(string, substring)
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>原来得到的:${w}<br />
判断得到的:${fn:contains(w, "2")}
原来得到的:2006-11-12 11:22:22.0
判断得到的:true
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>
原来得到的:${w}<br />
判断得到的:${fn:contains(w, "9")}
原来得到的:2006-11-12 11:22:22.0
判断得到的:false
fn:containsIgnoreCase(string, substring)
假如参数string中包含参数substring(忽略大小写),返回truefn:endsWith(string, suffix)
假如参数 string 以参数suffix结尾,返回truefn:escapeXml(string)
将有非凡意义的XML (和HTML)转换为对应的XML character entity code,并返回fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。fn:length(item)
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。假如是String类型,返回值是String中的字符数。fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素fn:startsWith(string, prefix)
假如参数string以参数prefix开头,返回true
fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符
fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串
fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串
fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回fn:trim(string)
去除参数string 首尾的空格,并将其返回截取字符串!使用!
<c:if test="${fn:length(onebeans.info)>100 }">${ fn:substring( onebeans.info ,0,100)} ...</c:if>
<c:if test="${fn:length(onebeans.info)<=100 }">${ onebeans.info }</c:if>
EL表达式语法:
${ EL expression}
其中:
$表示EL表达式的开始。
EL expression指定表达式。
一、JSP EL表达式可用于如下几种方式。
1 静态文本:包含EL表达式,其值在运行时计算出来。如: ${8+5}
2 标准标签和自定义标签属性:帮助显示网页上的动态内容。
JSP提供一些标准标签,<jsp:useBean>、<jsp:include>等。自定义标签是由用户使用taglib指令 编写的。
EL表达式可以作为一个值传递给上述标签的属性。表达式在运行时计算,结果值将作为属性值进行传递。
如:
<%
pageContext.setAttribute("color","#ffccff");
%>
<body bgcolor="${pageScope.color}">
7+8=${7+8}
</body>
3 JavaBean与EL表达式:使用EL表达式可以简洁地读出JavaBean的属性值。
传统的JSP通常使用如下方法访问JavaBean:
<jsp:getProperty name=”myBean” property=”name”/>
<%=myBean.getName()%>
EL表达式则简化为:
${myBean.name}
二、启用/禁用EL表达式
<%@ page isELIgnored=”true|false” %>为true时,支持EL表达式计算。
为false时,不支持EL表达式计算。
三、变量
JSP表达式${product}的计算结果与调用pageContext.findAttribute(“product”)一样,EL表达式 中的变量可以引用存储在标准范围(如:page request session application)中的属性。点运算符(.)和”[]”用于获取变量的值。
如:a.identifier-b与expr-a[identifier-b]等价。
四、隐式对象
JSP隐式对象是一组标准的类。在JSP EL定义了如下隐式对象:1 pageContext:提供对页面属性的访问。通过pageContext对象可以访问和使用下列对象。
2 request:表示接受的客户端的JSP页面请求。请求的信息可以使用request对象来访问。 如:${pageContext.request.contextPath}返回请求的上下文路径。
3 param:返回将请求参数名映射至单个字符串值的值。如:${param[“name”]}
4 paramValues:返回映射至客户端的请求参数的一组值。
5 pageScope:返回页面范围的变量名,这些名称已映射至相应的值。
6 requestScope:提供对请求对象的属性的访问权限。
7 sessionScope:返回会话范围内的变量名。
8 applicationScope: 返顺应用程序范围内抽变量名。
五、文字常量
JSP表达式语言定义了下列文字常量:
1 布尔型:true或false。
2 整型:与Java中的整型相同。
3 浮点型:与Java中的浮点型相同。
4 字符串型:用单引号或双引号引起。
5 null:表示没有值。0和空字符串表示的不是null值。
六、运算符
点运算符(.)和”[]”用于获取变量的值。
!或not 布尔值取反
empty 检查空值
* 乘法
/或div 除法
%或mod 求余数或取模
+ 加
- 减
<或lt 小于
>或gt 大于
<=或le 小于等于
>=或ge 大于等于
==或eq 等于
!=或ne 不等于
&&或and 逻辑与
||或 or 逻辑或
num1?num2:result 条件运算符
=================================================================
[size=large]EL表达式 动态表格数据加序号
<c:forEach var="zb" items="${list}" varStatus="index">
${index.count}
</c:forEach>
================================================================
定义页面变量,自增
<c:set value="0" var="i" scope="page"/> <c:forEach var="fb" items="${FB}" varStatus="index">
<tr> <td width="10%" align="center">
<c:if test="${!empty fb.sfbz}">
<c:set value="${pageScope.i + 1}" var="i" scope="page"/>
<c:out value="${pageScope.i }"/>
</c:if>
</td> <td width="40%">
${fb.xmmc}
</td>
<td width="40%">
${fb.sfbz}
</td>
</tr>
</c:forEach>
==================================================================
格式化时间
<fmt:formatDate value="${yxqjz}" pattern="yyyy-MM-dd" />
<fmt:formatDate value="${zxyprice.startdate2}" type="date" dateStyle="medium"/>
====================================================================
跨行
<c:if test="${status.index == 0}" >
<td rowspan="${size}">1月</td>
</c:if>
=====================================================================
<script type="text/javascript">
<!--
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
TabbedPanels1.showPanel(${tabId});
//-->
</script>
<div id="TabbedPanels1" class="TabbedPanels">
<ul class="TabbedPanelsTabGroup">
<li class="TabbedPanelsTab" tabindex="0" style="font-size:12px;background-color:#DED465;">
工作计划
</li>
</ul>
</div>
原创笔记。若有错误,请及时告知