EL和JSTL

目录

一、EL

1.EL概述

2.EL的使用

3.EL语法

4、EL隐式对象(重点)

二、JSTL

1.概述

2.安装和测试

3.标签介绍


一、EL

1.EL概述

       用来解决在JSP页面写Java代码导致混乱的问题,在 JSP2.0 规范中提供了 EL 表达式。EL 是 Expression Language 的缩写,它是一种简单的数据访问.

2.EL的使用

       EL 表达式的语法非常简单,都是以“${”符号开始, 以“}”符号结束的,具体格式如下: ${...}

      代码示例:

Servlet

public class MyServlet extends HttpServlet {  
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   
           request.setAttribute("username", "lisi");   
           request.setAttribute("password", "123456");   
           request.getRequestDispatcher("index.jsp").forward(request, response);  
     } 
} 

jsp页面

<boby>    
     用户名:${username }  
     密码:${password }
 </body> 
 

3.EL语法

EL标识符规范

1. 不能以数字开头;

2. 不能是 EL 中的保留字,如 and、or、gt;

3. 不能是 EL 隐式对象,如 pageContext;

4. 不能包含单引号()、双引号(")、减号(-)和正斜线等特殊字符常量 

EL表达式中的变量

EL 表达式中的变量就是一个基本的存储单元,EL 表达式可以将变量映射到一个对象上。 ${name } name 就是一个变量,EL 表达中的变量不用事先定义就可以直接使用,${name }就可以访 问变量 name 的值。 

EL 表达式中的常量

它是不能改变的数据 包括 布尔常量  整型常量  浮点数常量  字符串常量  Null 常量 

EL 表达式中的点运算符

用于问 JSP 页面中某些对象的属性 ${user.name } 访问 user 对象中的 name 属性 

EL 表达式中的方括号运算符

与点运算符的功能相同,都用于访问 JSP 页面中某些对象的属 性,当获取的属性名中包含一些特殊符号,如“-”或“?”等并非字母或数字的符号,就 只能使用方括号运算符来访问该属性,其语法格式如下

${user["My-name"]} 访问 user 对象中的 My-name 属性 

示例:

与点运算符的区别

1. 点运算符和方括号运算符在某种情况下可以互换 如 ${user.name} 等价于 ${user["name"]}

2. 方括号运算符和点运算符可以相互结合使用 例如,表达式${users[0].name}可以访问集合或数组中的第一个元素的 name 属性

3. 方括号运算符还可以访问 List 集合或数组中指定索引的某个元素, 如表达式${users[0]}用于访问集合或数组中第一个元素。在这种情况下,只能使用方括号运算符而不能使用点运算符 

以及以下运算符:

empty 运算符用于判断某个对象是否为 null 或”” ${empty var} ${empty user} 

示例:

4、EL隐式对象(重点)

获取指定作用域数据 

<body>
    <%
      pageContext.setAttribute("name","aaa");
      request.setAttribute("name","bbb");
      session.setAttribute("name","ccc");
      application.setAttribute("name","ddd");
    %>
     使用脚本取域里的值
      <%=pageContext.getAttribute("name")%>
      <%=request.getAttribute("name") %>
      <%=session.getAttribute("name")%>
      <%=application.getAttribute("name") %><br>
   EL表达式取值:依次(小到大)从域中找key为name的值<br>
   ${name}
     从指定域中去取值:<br>
   pageContext:${pageScope.name }<br>
   request:${requestScope.name }<br>
   session:${sessionScope.name }<br>
   application:${applicationScope.name }<br>
</body>

运行结果:

获取头信息

<body>
    ${header.Host }<br>
    ${headerValues }<br>
    User-Agent:
    ${headerValues["User-Agent"][0]}
</body>

结果:

获取初始化参数的信息

<body>
       取到初始化的所有的值:
    ${initParam }<br>
       取到初始化指定的值:
    ${initParam.name }
</body>

在web.xml里写初始化参数

运行结果:

获取cookie

<title>EL获取cookie</title>
</head>
<body>
    <%
       Cookie c=new Cookie("JSESSIONID","F5AE0956598D88878F20A961C4D9F15F");
    %>
    ${cookie }<br>
    ${cookie.JSESSIONID }<br>
    ${cookie.JSESSIONID.value}<br>
</body>

运行结果:

获取数据

<title>EL获取Map</title>
</head>
<body>
    <% 
    Map m=new HashMap();
    m.put("name","yyy");
    m.put("age","18");
    request.setAttribute("m",m);
    %>
       脚本方式:
    <%=((Map)request.getAttribute("m")).get("name") %><br>
    EL方式:
    ${m }<br>
    ${m.name}   
</body>

运行结果:

二、JSTL

1.概述

标准标签库( JavaServer Pages Standard Tag Library),简称 JSTL 

2.安装和测试

下载JSTL包并导入

下载地址:http://tomcat.apache.org/download-taglibs.cgi#Standard-1.2.5 

导入项目:

测试:

导入Core标签库

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>(必须加上)

示例:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>测试</title>
</head>
<body>
    <c:out value="哈哈"></c:out>
</body>
</html>

运行结果:

3.标签介绍

set标签

属性介绍:

1. value 属性用于设置属性的值

2. var 属性用于指定要设置的域对象属性的名称

3. scope 属性用于指定属性所在的域对象

4. target 用于指定要设置属性的对象,这个对象必须为 JavaBean 对象或 Map 对象

5. property 用于指定要为当前对象设置的属性名称 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
       设置域中的值:
    <c:set value="yyy" scope="session" var="userName"></c:set>
    <c:out value="${userName}"></c:out>
</body>
</html>

运行结果:

if标签

属性介绍:

1. test 属性用于设置逻辑表达式

2. var 属性用于指定逻辑表达式中变量的名字

3. scope 属性用于指定 var 变量的作用范围,默认值为 page,如果属性 test 的计 算结果为 true,那么标签体内将被执行,否则标签体不会被执行。 

<body>
    <c:if test="${3<4}">
              3小于4
    </c:if>
</body>

运行结果:

choose标签

<body>
    <c:set value="5" scope="session" var="day"></c:set>
    <c:choose>
          <c:when test="${day==1}">周一</c:when>
          <c:when test="${day==2}">周二</c:when>
          <c:when test="${day==3}">周三</c:when>
          <c:when test="${day==4}">周四</c:when>
          <c:when test="${day==5}">周五</c:when>
          <c:when test="${day==6}">周六</c:when>
          <c:when test="${day==7}">周日</c:when>
          <c:otherwise>未知</c:otherwise>
    </c:choose>
    
</body>

运行结果:

forEach标签

<body>
     <%
       List list=new ArrayList();
       list.add("aaa");
       list.add("bbb");
       list.add("ccc");
       request.setAttribute("list",list);
     %>
     ${list }<br>
     ${list[0] }<br>
     <c:forEach begin="1" end="10" step="1" var="i" varStatus="vs">
         ${i }--${vs.count }--${vs.current }<br>
     </c:forEach>
     <c:forEach items="${list}" var="v">${v }<br></c:forEach>
</body>

运行结果:

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值