EL和JSTL

EL表达式

EL表达式全称:Expression Language,即表达式语言EL表达式作用:代替JSP页面中表达式脚本进行数据的输出(只能获取数据,不能设置数据)EL表达式的格式是:${表达式} ,EL表达式写在jsp页面中,表达式一般是域对象的key,简化了jsp表达式的使用

它可以通过变量名取值

它可以获取对象属性值

它可以获取对象集合元素

它可以执行表达式

1.基本格式,el表达式放在{}中,并且前面有个$作为前缀

${… }
2.获取对象

${user }
未指定域则按照域的范围从小到大找到或者找完为止


3.获取属性

${user.name }


本质,调用get方法获取值,若有get方法则有,若没有get方法会报错
${user[“name”] }


4.获取Map中的属性可以直接通过属性的key

${map.key }
${map[key] }

5.指定域

${ pageScope .user}:当前页面
${requestScope.user}:当前请求
${sessionScope.user}:当前会话
${sessionScope.user}:当前应用
 

隐式对象

pageContext,可以获取全部可获得对象

请求域

请求域主要用于获取域对象中的属性,四个对象分别对应四个请求域

pageScope

requestScope

sessionScope

applicationScope

请求参数

参数对象用于获取get或post请求中的参数。

param:获取指定请求参数,后跟参数名。

paramValues:获取请求参数数组,返回一个string类型的数组。

逻辑操作
+                                    加                                       ${17+5}    22
-                                     减                                       ${17-5}    12
*                                    乘                                        ${17*5}    85
/                                   div    除                          ${17/5}或${17 div 5}    3
%                                mod    取余                    ${17%5}或${17 mod 5}    2
==                                eq    等于                      ${5==5}或${5 eq 5}    true
!=                                 ne    不等于                   ${5!=5}或${5 ne 5}    false
<                                  lt    小于                         ${3<5}或${3 lt 5}    true
>                                  gt    大于                       ${3>5}或${3 gt 5}    false
<=                                le    小于等于                ${3<=5}或${3 le 5}    true
>=                               ge    大于等于              ${3>=5}或${3 ge 5}    false
&&                             and    并且            ${true&&false}或${true and false}    false
!                                not    非                          ${!true}或${not true}    false
||                                or    或者                 ${true||false}或${true or false}    true
empty    是否为空    ${empty “”},可以判断字符串、数据、集合的长度是否为0,为0返回true。 empty还可以与not或!一起使用。${not empty “”}    true

jstl

el表达式封装了数据访问的功能,jstl标签库封装了逻辑控制、循环控制以及数据格式化等功能,二者结合可以完整实现动态页面的开发需求

导入 jstl 的依赖

<dependency>
<groupId> javax.servlet </groupId>
<artifactId> jstl </artifactId>
<version> 1.2 </version>
</dependency>

格式化库
<% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
核心库
<% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

core标签库常用标签

<c:out value=”aaa”/>输出aaa字符串常量
<c:out value=”${aaa}” default=”xxx”/>当${aaa}不存在时,输出xxx字符串
<c:out value=”${aaa}”/>与${aaa}相同

<c:out value="${a }" default=“xxx” escapeXml=“false” />    


<c:set var=”a” value=”hello”/>                                在pageContext中添加name为a,value为hello的数据。


<c:set var=”a” value=”hello” scope=”session”/>    在session中添加name为a,value为hello的数据。
 

remove标签


c:remove var="a" scope=”page”/    删除pageContext中name为a的数据

if标签:if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行

<c:set var="a" value="hello"/>
<c:if test="${not empty a }">
    <c:out value="${a }"/>
</c:if>
 

choose标签:choose标签对应Java中的if/else if/else结构。when标签的test为true时,会执行这个when的内容。当所有when标签的test都为false时,才会执行otherwise标签的内容。

<c:set var="score" value="${param.score }"/>
<c:choose>
    <c:when test="${score > 100 || score < 0}">错误的分数:${score }</c:when>
    <c:when test="${score >= 90 }">A级</c:when>
    <c:when test="${score >= 80 }">B级</c:when>
    <c:when test="${score >= 70 }">C级</c:when>
    <c:when test="${score >= 60 }">D级</c:when>
    <c:otherwise>E级</c:otherwise>
</c:choose>.
 

forEach标签:

<%
String[] names = {"zhangSan", "liSi"};
pageContext.setAttribute("ns", names);
%>
<c:forEach var="item" items="${ns }">
    <c:out value="name: ${item }"/><br/>
</c:forEach>.
 

遍历List

<%
    List<String> names = new ArrayList<String>();
    names.add("zhangSan");
    names.add("liSi");
    names.add("wangWu");
    names.add("zhaoLiu");
    pageContext.setAttribute("ns", names);
%>
<c:forEach var="item" items="${ns }">
    <c:out value="name: ${item }"/><br/>
</c:forEach>.
 

 遍历Map

<%
    Map<String,String> stu = new LinkedHashMap<String,String>();
    stu.put("number", "N_1001");
    stu.put("name", "zhangSan");
    stu.put("age", "23");
    stu.put("sex", "male");
    pageContext.setAttribute("stu", stu);
%>
<c:forEach var="item" items="${stu }">
    <c:out value="${item.key }: ${item.value }"/><br/>
</c:forEach>.
 

  • count:int类型,当前以遍历元素的个数;
  • index:int类型,当前元素的下标;
  • first:boolean类型,是否为第一个元素;
  • last:boolean类型,是否为最后一个元素

 fmt标签库常用标签:fmt标签库是用来格式化输出的,通常需要格式化的有时间和数字。

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
......
<%
    Date date = new Date();
    pageContext.setAttribute("d", date);
%>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>。
 

<%
    double d1 = 3.5;
    double d2 = 4.4; 
    pageContext.setAttribute("d1", d1);
    pageContext.setAttribute("d2", d2);
%>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>
<fmt:formatNumber value="${d2 }" pattern="#.##"/>。
 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值