EL和JSTL使用笔记

目录

[TOC]

一 EL和JSTL的作用

  • 去掉jsp文件中的jav代码

二 EL表达式和JSTL间的关系

EL表达式和JSTL间的关系

  • 通过EL获取到数据之后交给JSTL处理,处理完之后,再将数据交给EL显示

二 EL表达式的作用

基础:EL表达式的取值范围

默认取值范围,是为了让开发者不用经常写范围,是为了简化EL表达式

1)默认取值范围

EL默认从如下四个对象(JSP中的部分隐含对象)中依次取值

  • page
  • request
  • session
  • application

2)指定取值范围

  • 指定在request中取值:requestScope.stu.name
  • 指定在session中取值:sessionScope.stu.name
  • 指定在page中取值:pageScope.stu.name
  • 制定在applicatio中取值:application.stu.name

2.1 访问Bean的属性

通过EL表达式访问属性都是通过bea属性来访问

2.1.1 bean属性了解

  • 和get/set对象的属性叫bean属性
  • 通过get/set反应出来的我们以为的属性叫bean属性
  • 去掉get并将首字母小写的属性是bean属性
  • Bean属性通常都和对象属性一致,也可以修改为不一致

2.1.2 案例

<!-- 等价于request.getAttribute("stu").getName() -->
<p>姓名:${stu.name}</p>
<!-- 等价于request.getAttribute("stu").getAge() -->
<p>年龄:${stu["age"]}</p>
<!-- 等价于request.getAttribute("stu").getCourse().getId()
    id的i不要大写 -->
<p>课程Id:${stu.course.id}</p>

2.2 输出简单的运算效果

基本上基本运算都支持,也使用了empty来进行判空运算

<!-- 2. 支持运算 -->
    <p>年龄+5${stu.age+5}</p>
    <p>判断年龄是否在20~30之间:${stu.age>20 && stu.age<30}</p>
    <p>判断student是否为空:${empty stu}</p>

2.3 获取请求的参数值

${param.username}
等价于
request.getParameter("username");

${param.city}
等价于
request.getParameterValues("city");

案例

<!-- 3. 获取参数 -->
    <p>获取请求参数:${param.user}</p>

三 JSTL介绍及使用

3.1 JSTL介绍

JSTL全称是JSP Standard Tag Library,即JSP标准标签库.是sun公司定义的一套标准,由Appache组织基于这套标准开发的一套标签库后又转给sun公司,被称为JSTL,成为了Javaee5.0的核心

3.2 JSTL使用

  1. 使用maven导入jar包
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
  1. 在jsp文件中导入要使用的标签库
    JSP中标签库的位置以及结构

  2. 在JSP文件中导入标签库

    <%@page pageEncoding="utf-8"%>
    <!--
        uri为在maven依赖库中uri标签对应的值(12行)
        prefix为在maven依赖库中short-name标签对应的值(11行)
         -->
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" 
    prefix="c" %>

3.2.1 常用标签

if标签

<!-- 1. if标签 -->
<p>
    <!-- 在test中写条件,但是if语句没有else -->
    <c:if test="${stu.sex == 'M'}"></c:if>
    <c:if test="${stu.sex == 'F'}"></c:if>
</p>

choose标签

<c:choose>
    <!-- 相当于if -->
    <c:when test="${stu.sex == 'M'}"></c:when>
    <!-- 相当于esle if -->
    <c:when test="${stu.sex == 'F'}"></c:when>
    <!-- 相当于else -->
    <c:otherwise>不男不女</c:otherwise>
</c:choose>

forEach标签

<h2>3. forEach标签</h2>
<!-- 
    items:声明遍历的数据
    var:给每次循环所获得的数据命名
 -->
<p>
    <c:forEach items="${stu.intrests}" var="intrest">
        ${intrest } 
    </c:forEach>
</p>

结果展示:

查询结果

3.3 JSTL运行原理

JSTL运行原理

  • 请求经由servlet转发至jsp后,遇到了遇到使用jstl标签,根据jsp文件引用的jsp标准标签库引用的语句,之后再由引用哪一个标签,找到标签库中的对应的标签解析语句,调用其中的doTag()方法,翻译成对应的java代码.

猜你喜欢

转载自www.cnblogs.com/gupan/p/9209819.html