一、el表达式

1、概述:jsp的内置表达式语言,用来替代<%=..%>

${el表达式}

2、作用:

1)获取数据

a、获取简单属性

${属性名}:依次从pageContext,request,session,application查找指定属性,

若查找到返回值,结束该次查找,若查找不到,返回""

b、获取复杂数据

获取数组中的数据

${域中的名称[index]}

获取list中的数据

${域中的名称[index]}

获取map中的数据

${域中的名称.键名}

c、获取Javabean属性值

${域中javabean名称.bean属性}

2)执行运算

a、四则运算

+:只能进行加法运算,字符串形式数字可以进行加法运算

b、关系逻辑运算符

b、empty

判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空

${empty list}

c、取反 not empty

d、三元运算符

${ 3>4?"yes":"no" }

3、el的11个内置对象

PageContext 表示此JSP的PageContext

在jsp页面中获取项目名 ${pageContext.request.contextPath}

PageScope 取得Page范围的属性名称所对应的值

RequestScope 取得Request范围的属性名称所对应的值

sessionScope 取得Session范围的属性名称所对应的值

applicationScope 取得Application范围的属性名称所对应的值

param 如同ServletRequest.getParameter(String name)。回传String类型的值

paramValues 如同ServletRequest.getParameterValues(String name)。回传String[]类型的值

header 如同ServletRequest.getHeader(String name)。回传String类型的值

headerValues 如同ServletRequest.getHeaders(String name)。回传String[]类型的值

initParam 如同ServletContext.getInitParameter(String name)。回传String类型的值

cookie 如同HttpServletRequest.getCookies()

java中Cookie的api

getName():获取cookie的名称

getValue():获取cookie的value值

二、jstl表达式

1、概述:jsp标准的标签库语言,用来替代java脚本

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c/fmt/fn" %>

2、分类

1)core:核心类库

a:c:if 判断

<c:if test="${el表达式}">满足的时候输出的内容</c:if>

例如:判断登录

<c:if test="${not empty name }">

${name}欢迎你!

</c:if>

<c:if test="${empty name }">

你尚未登陆请重新登陆<a href="${pageContext.request.contextPath}/login.jsp">点击登陆</a>

</c:if>

b:c:forEach 循环

格式1:

<c:forEach begin="从那里开始" end="到那里结束" step="步长" var="给变量起个名字" varStatus="循环状态变量">

${i }--${vs.count }--${vs.current }<br>

//count:记录次数 从1开始 current:当前遍历的内容 index: 索引 从0开始

</c:forEach>

例: <c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">

${i }--${vs.count }--${vs.current }<br>

</c:forEach>

格式2:

<c:forEach items="${el获取域中的容器}" var="n">

${n}

</c:forEach>

例: <c:forEach items="${map}" var="en">

${en.key }-- ${en.value }<br/>

</c:forEach>

c:c:url 自动补项目路径,自动url重写

<a href='<c:url value="/foreach.jsp" />'>foreach.jsp</a>

相当于:<a href="${pageContext.request.contextPath}/foreach.jsp">foreach.jsp</a>

2)fmt:国际化

<fmt:formatDate value="要显示的日期" type="DATE/TIME/BOTH" dateStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT"

timeStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT" pattern="自定义格式模式" timeZone="显示日期的时区"

var="存储格式化日期的变量名" scope="存储格式化日志变量的范围" />

3)xml/sql:已过时

4)函数库:

fn:contains(string,substring) 是否包含

fn:containsIgnorrCase(string,substring) 忽略大小写

fn:endsWith(string,suffix) 是否以suffix结尾

fn:startsWith(string,prefix) 是否以prefix开头

fn:substring(string,begin,end) 返回字串 以begin开始end结束

fn:substringAfter(string,substring)

fn:substringBefore(string,substring)

fn:toLowerCase(string) 变小写

fn:toUpperCase(string) 变大写

fn:trim(string) 去除首尾空格

fn:escapeXml(string) xml/html转换

fn:indexOf(string,substring) 返回第一次出现的索引

fn:join(array,separator) 返回字串,用separator代替array里的分隔符

fn:length(item) 返回长度

fn:replace(string,before,after) 替换

fn:split(string,separator) 以separator为分隔符分割string 返回数组