EL表达式和JSTL标签

EL表达式和JSTL标签

为什么使用EL表达式

写法比jsp简单,替代jsp页面中的复杂代码

使用简单 相比较在jsp页面中嵌入java代码,EL应用更加简单

<%
    request.setAttribute("jim","jim");
%>
<%
    out.print(request.getAttribute("jim"));/*使用java代码对页面的输出*/
%>
${jim}<br><%--使用EL表达式对页面的输出 在jim值为null时,不进行输出--%>

什么是El表达式

EL即Expression Language(表达式语言) 简称EL.

是jsp2.0中引入的一个新内容.

通过EL表达式可以简化在JSP开发中对对象的引用,从而规范页面代码,增强程序的可读性及维护性.

EL表达式语法

El语法

以“${”作为开始

以“}”作为结束
**直接使用变量名获取值 ∗ ∗ 例 : ** 例: { username }

El的特点

自动转化类型

EL得到某个数据时可以自动转化类型 对于类型的限制更加宽松

操作符

主要有算术运算符,比较运算符,逻辑运算符,验证运算符empty与条件运算符,

.运算符

算术运算符

运算符功能
+执行加法功能(没有字符串连接,代码执行会报错)
-减法
*乘法
%取模

比较运算符

运算符功能
==或eq判断符号两边是否相等,相等则返回true,否则返回false
!=或ne判断符号两边是否不相等,相等则返回true,否则返回false
<或lt判断符号左边是否小于右边,如果小于则返回true,否则返回false
>或gt判断符号左边是否大于右边,如果小于则返回true,否则返回false
<=或le判断符号左边是否小于或等于右边,如果小于或等于则返回true,否则返回false
>=或ge判断符号左边是否大于等于右边,如果大于或等于则返回true,否则返回false

逻辑运算符

运算符功能
&&或and(短路与)${false && false} 或者 ${false and false }
||或or(短路或)${true || false} 或者 ${true or false }
!或not(逻辑非) ! t r u e ( 相 当 于 {!true}(相当于 !true{false}) 或者 ${not true }

"."运算符

作用获取对象的属性

<%
    User user = new User("jim",19);
    request.setAttribute("user",user);//将user对象添加到请求对象中
%>
${user.name}<%--向页面输出name值--%>

EL隐世对象

对象名称说明
pageScope返回页面范围的变量名
requestScope返回请求范围的变量名
sessionScope返回会话范围的变量名
applicationScore返回应用范围的变量名
<%--
  Created by IntelliJ IDEA.
  User: 小刘同学
  Date: 2021/04/08
  Time: 16:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<%

    pageContext.setAttribute("num","page");

    request.setAttribute("num","request");

    session.setAttribute("num","session");

    application.setAttribute("num","application");

%>
<body>
${num}<%--如果setAttribute中对的name值一样,使用name值获取的是pageContext--%>
${applicationScope.num}
${sessionScope.num}
${requestScope.num}
</body>
</html>

什么是JSTL

jstl是jsp标准标签库使用JSTL实现jsp页面中逻辑处理

JSTL环境搭建

导入标签库中的jar文件

在jsp页面中添加taglib指令

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

使用jstl标签

JSTL核心标签

迭代标签:foreach forTokens

条件标签:if

foreach标签

item:指定要遍历的集合(可以是集合,数组)对象

var:指定集合内数据变量的名称

begin:指定从集合的第几位开始

end:指定迭代到集合的第几位结束

<%@ page import="com.lsy.login.bean.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%--
  Created by IntelliJ IDEA.
  User: 小刘同学
  Date: 2021/04/01
  Time: 20:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<%
    List<User> list =  new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        User user = new User("admin"+i,i);
        list.add(user);
    }
    request.setAttribute("list",list);
%>
<body>
<table border="1" width="400">
    <tr>
        <td>序号</td>
        <td>姓名</td>
        <td>年龄</td>
        <td>操作</td>
    </tr>
    <c:forEach items="${list}" var="user" varStatus="s">
        <tr>
        <td>${s.count}</td>
        <td>${user.name}</td>
        <td>${user.age}</td>
        <td><a href="">删除</a></td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

forTokens标签

item:指定需要迭代的字符串

delims表示分隔符

var表示使用分隔符分割item产生的字符串

<%
 String str="a1b1c1s1ff1g1";
    request.setAttribute("str",str);
%>
<c:forTokens items="${str}" delims="1" var="s">
    ${s}
</c:forTokens>

if标签

if标签用于判断条件是否成立,与java中的if语句作用一样

test:判断条件表达式

var:用于保存返回的true或false

scope:指定var变量的作用域

<c:if test="${num1==10}" var="res" scope="request">
    <h1>成立</h1>
</c:if>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值