EL表达式和jstl标签

1.EL的作用

JSP2.0要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。
JSP2.0 – 纯标签页面,即:不包含<% … %>、<%! … %>,以及<%= … %>
EL(Expression Language)是一门表达式语言,它对应<%=…%>。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

2.EL的格式

格式:${…}

3.关闭EL

如果希望整个JSP忽略EL表达式,需要在page指令中指定isELIgnored=”true”。
如果希望忽略某个EL表达式,可以在EL表达式之前添加“\”,例如:${1 + 2}。

4.运算符

+   加
-*   乘
/或div   除
%或mod   取余
==或eq   等于
!=或ne   不等于
<或lt    小于
>或gt    大于
<=或le   小于等于
>=或ge   大于等于
&&或and  并且
!或not   非
||或or   或者
empty   是否为空

注:EL不显示null
  当EL表达式的值为null时,会在页面上显示空白,即什么都不显示

5.el操作list array map

1.操作List和数组: list[0] {arr[0]};
2.操作bean的属性: person.name {person[‘name’]},对应person.getName()方法;
3.操作Map的值: map.key {map[‘key’]},对应map.get(key)。

6.EL内置对象

EL一共11个内置对象,无需创建即可以使用。这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。
1.pageScope
2.requestScope
3.sessionScope
4.applicationScope
5.param;
6.paramValues;
7.header;
8.headerValues;
9.initParam;
10.cookie;
11.pageContext;

7.域相关内置对象

域内置对象一共有四个:
1.pageScope: pageScope.namepageContext.getAttribute(name)2.requestScope {requestScope.name}等同与request.getAttribute(“name”);
3.sessionScoep: sessionScope.namesession.getAttribute(name)4.applicationScope {applicationScope.name}等同与application.getAttribute(“name”);

1.如果在域中保存的是JavaBean对象,那么可以使用EL来访问JavaBean属性。因为EL只做读取操作,所以JavaBean一定要提供get方法,而set方法没有要求。
2.全域查找:${person}表示依次在pageScope、requesScopet、sessionScope、appliationScope四个域中查找名字为person的属性。

8.请求参数相关内置对象

param和paramValues这两个内置对象是用来获取请求参数的。
1.param:Map<String,String>类型,param对象可以用来获取参数,与request.getParameter()方法相同。不过el表达式不会输出null
2.paramValues:paramValues是Map<String, String[]>类型,当一个参数名,对应多个参数值时可以使用它。

9.请求头相关内置对象

header和headerValues是与请求头相关的内置对象:
1.header: Map<String,String>类型,用来获取请求头。
2.headerValues:headerValues是Map<String,String[]>类型。当一个请求头名称,对应多个值时,使用该对象。

10.应用初始化参数相关内置对象

initParam:initParam是Map<String,String>类型。它对应web.xml文件中的<context-param>参数。

11.Cookie相关内置对象

cookie:cookie是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。

12.pageContext对象

pageContext:pageContext是PageContext类型!可以使用pageContext对象调用getXXX()方法,例如pageContext.getRequest(),可以${pageContext.request}。也就是读取JavaBean属性!!!

13.EL函数库

1.EL函数库是由第三方对EL的扩展
2.EL函数库就是定义一些有返回值的静态方法。然后通过EL语言来调用它们!当然,不只是JSTL可以定义EL函数库,我们也可以自定义EL函数库。
3.EL函数库中包含了很多对字符串的操作方法,以及对集合对象的操作。

14.使用el函数库需要导入标签库

因为是第三方的东西,所以需要导入。导入需要使用taglib指令!

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

15.EL函数库介绍
1.String toUpperCase(String input):
2.String toLowerCase(String input):
3.int indexOf(String input, String substring):
4.boolean contains(String input, String substring):
5.boolean containsIgnoreCase(String input, String substring):
6.boolean startsWith(String input, String substring):
7.boolean endsWith(String input, String substring):
8.String substring(String input, int beginIndex, int endIndex):
9.String substringAfter(String input, String substring):hello-world, “-“
10.substringBefore(String input, String substring):hello-world, “-“
11.String escapeXml(String input):把字符串的“>”、“<”。。。转义了!
12.String trim(String input):
13.String replace(String input, String substringBefore, String substringAfter):
14.String[] split(String input, String delimiters):
15.int length(Object obj):可以获取字符串、数组、各种集合的长度!
16.String join(String array[], String separator):

jstl标签库

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib  uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setAttribute("basePath", basePath);
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'MyJsp.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>

  out标签:<br>
  <c:out value="aaa" /><br>
  <c:out value="${basePath}"/><br>
  <c:out value="${aa }" default="bbb"/><br>
  <%
  request.setAttribute("a", "<script> 这里会运行js代码</script>");

  %>
  <c:out value="${a}" escapeXml="false"/><br>
  set标签:<br>
  <c:set scope="session" value="value" var="name"/><br>${name }
   remove标签:<br>
  <c:remove var="name"/><br>${name}<br>
   url标签:会自动进行url重写<br>
 项目路径: <c:url value="/"/><br>
 路径保存到a中<c:url value="/" var="a" scope="request"/>${a }<br>
 输出servlet路径<c:url value="/servlet1" /><br>
输出路径参数<c:url value="/servlet1" >
        <c:param name="username">zhang</c:param>
        <c:param name="password">dong</c:param>
        </c:url>
        <br>
     if标签:<br>
  <c:if test="${not empty a }">
       <c:out value="${a }"></c:out>
       aaaa
  </c:if>

  <c:set value="10" var="aa"></c:set>
   if else if else标签:<br>
  <c:choose>
    <c:when test="${ 0>aa }"> 你好,我是负数   </c:when>
    <c:when test="${ aa>10}">你好我大于10</c:when>
    <c:otherwise>你好我大于等于0小于等于10</c:otherwise>
  </c:choose>
  <br>
   foreach  for循环 标签:<br>
  <c:forEach var="ii" begin="1" end="20" step="5" >
        ${ii }<Br>  
  </c:forEach>
  <%
  String arr[] = {"123","456","789"};
  request.setAttribute("arr", arr);
  Map map =new HashMap();
  map.put("name", "name");
  map.put("pwd", "pwd");
  request.setAttribute("map", map);
  request.setAttribute("data", new Date());
  %>
  <br>
   foreach  遍历数组 标签:<br>
  <c:forEach var="it" items="${arr}" >

  <c:out value="${ it}"></c:out>
  </c:forEach><br>

   foreach  遍历map 标签:<br>
  <c:forEach var="item" items="${map }" varStatus="vs">
  <c:out value="${item.key }:${item.value }"></c:out>${item.key }:${item.value } <br>
  <c:if test="${vs.first }">
  ${item.key }:${item.value }
  </c:if>
 <br>
  </c:forEach>
  时间格式化 标签:<br>
  <fmt:formatDate value="${data }" pattern="YYYY-MM-DD hh:mm:ss"/><br>
    数字格式化标签:<br>
  <fmt:formatNumber value="2.0"  pattern="0.00"/><br>
  <fmt:formatNumber value="2000.0000"  pattern="#.##"/><br>
  </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值