jsp_el表达式和jstl

el表达式

可以用el表达式获取到指定域中的属性值

语法:

${el表达式}

操作符:

“.” 获取对象的属性,

  • 用于对象获取属性值
  • 用于获取map中的对象的属性值

“[]”

  • 获取对象的属性,例如 ${user[“name”]}。

  • 获取集合中的对象,例如 userList[0]

设置文件头:

<%@ page contentType="text/html;charset=UTF-8"
         isELIgnored="false" 
         language="java" %>
isELIgnored 是否不使用 el表达式 默认是true

让我们先设置一下不同域中的属性

// 设置request域的属性值
request.setAttribute("name","zhangsan request");
// 设置session域的属性值
session.setAttribute("name","zhangsan session");
// 设置application域的属性值
application.setAttribute("name","zhangsan application");

在jsp中开始获取咯:

// 这个是使用内嵌Java代码获取不同域的属性
<%
    out.print(request.getAttribute("name"));
    out.print("<br/>");
    out.print(session.getAttribute("name"));
    out.print("<br/>");
    out.print(application.getAttribute("name"));
    out.print("<br/>");
%>

// el 表达式来啦
${name}
// 获取属性值为name的值,会从 request > session > application 依次设置,如果存在就返回,不存在就向下,如果application也没有找到,则返回null
${requestScope.name} // 获取request 域中的请求
${sessionScopec.name} // 获取session 域中的请求
${applicationScope.name} // 获取application 域中的请求

运算符说明
()改变执行的优先级,如${3 * (4+5)}
+,-,/,*,算术运算符,如 ${3+2}
==,!=,>,>=,<,<=关系运算符,例如${a == b} 或 ${a eq b}
&&,|| ,!逻辑运算符,例如${ true && false}
?:条件运算符,例如${a > b ? 1 : 2}
empty用于检测变量名是否为空,是否等于null,如 ${empty name}

JSTL

JSTL(JavaServerPages Standard Tag Library)

  • JSP标准标签库
  • 实现JSP页面的逻辑控制

使用步骤:

  • 导入jar包
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
  • 在jsp页面中添加指令
<%--JSTL使用库--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--国际化/格式化标签库--%>
<%@ taglib uri ="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

标签一览:

标签库名称作用
<c:out />输出文本内容到out对象,常用于显示特殊字符,显示默认值
<c:set />在作用域中设置变量或对象属性的值
<c:remove />在作用域中移除变量的值
<c:if />实现条件判断结构
<c:forEach />实现循环结构,可用于 list、map
<c:url />构造url地址
<c:param />在url后附加参数
<c:import />在页面中嵌入另一个资源内容
<fmt:formatDate />格式化时间
<fmt:formatNumber />格式化数字

标签的使用:

<p>使用JSTL 中 if 标签</p>
<c:if test="${!empty user}">
    <p>只有属性值中有user属性 <span style="color: red;">才显示~~~~</span></p>
</c:if>

<br/>

<p>使用JSTL 中的 forEach标签遍历 list</p>
<%--
items 是集合
var   是每次对象获取出来的存放的变量名
--%>
<c:forEach items="${userList}" var="user">
    <p>${user.name}</p>
</c:forEach>

<br/>
<p>使用JSTL中的forEach标签遍历 Map对象</p>
<%--
    map中是以 key value存储的那么取值就是
            对象.key
            对象.value
--%>
<c:forEach items="${userMap}" var="o">
    <p>${o.key}</p>
    <p>${o.value.name}</p>
</c:forEach>
    
   
<p>
    对当前时间格式化:
    <fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd"></fmt:formatDate>
</p>
    
    
<%--
    var  相当于 setAttribute中的第一个参数
    scope 是指定 作用域
    value是值 相当于 setAttribute中的第二个参数
--%>
<c:set var="user" scope="request" value="<%=user1%>"></c:set>
<c:remove var="user" scope="request"></c:remove>   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值