html支持el表达式吗_jsp还有人用吗

html支持el表达式吗_jsp还有人用吗EL表达式ExpressionLanguage表达式语言,常用于取值我们之前在JSP中写java代码必须写在<%%>里面。并且取值代码比较繁琐。而EL表达式可以使我们的取值更加简洁,简化JSP代码语法非常简单${}看个小例子:我们在一个表单填写账号和密码提交后在成功页面显示出账号密码。这里就直接贴成功页面的代码&amp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

EL表达式

Expression Language 表达式语言,常用于取值
我们之前在JSP中写java代码必须写在<%%>里面。并且取值代码比较繁琐。
而EL表达式可以使我们的取值代码更加简洁

语法非常简单

${}

看个小例子:

我们在一个表单填写账号和密码提交后在成功页面显示出账号密码。

这里就直接贴成功页面的代码

<%--
  Created by IntelliJ IDEA. User: YZQ
  Date: 2018/7/29
  Time: 20:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>

<h1>登录成功</h1>


<h3>传统的取值方式</h3>
用户名:<%=request.getAttribute("account")%>
<br>
密码:<%=request.getAttribute("pwd")%>


<h3>EL表达式取值</h3>

<%--使用EL表达式取值--%>
用户名:${ 
   requestScope.account} 
<br>
密码: ${ 
   pwd}
</body>
</html>

运行结果:

这里写图片描述

可以看到,使用EL表达式取值非常的简单,直接 ${account} 即可,我们的jsp页面主要就是用来显示数据的,那么,使用EL表达式则可以减少很多取值的代码。这些值是从哪取的呢,实际上就是从四大作用域中获取的。
servlet中的四个作用域分别为 pagerequestsessionapplication
我们可以指定在某个作用域中取数据。
例如

<%--从 page 作用域中查找account--%>
${ 
   pageScope.account}
<%--从 request 作用域中查找account--%>
${ 
   requestScope.account}
<%--从 session 作用域中查找account--%>
${ 
   sessionScope.account}
<%--从 application 作用域中查找account--%>
${ 
   applicationScope.account}

如果我们不指定作用域的话,直接 ${account}的话,默认会按照作用域的范围从小到大依次查找,找到第一个为止,都找不到的话则为空
作用域从小到大:page->request->session->application


JSTL

JSP标准标签库(JavaSeverPages Standard Tag Libary)
同样的也是为了简化我们的jsp代码,一般与EL表达式结合使用
EL表达式多用于取值操作,而JSTL则可以方便我们对集合进行遍历,对数据进行判断等操作。

首先,下载Standard Taglib

点击download
这里写图片描述

目前最新版本是1.2.5,将下面四个jar包下载后倒入到项目中即可。

这里写图片描述

然后我们在jsp页面添加如下指令后,即可使用jstl标签了

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

下图可知,JSTL有好几种标签,
这里写图片描述

<%--JSTL 核心标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--JSTL 格式化标签--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%--JSTL SQL标签--%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%--JSTL XMLb标签--%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%--JSTL 函数标签--%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

其中prefix表示前缀,前缀的值我们可以自己定义,但是不要使用关键字,会有冲突。为了保证可读性,一般都跟标签类型相对应
这里写图片描述

语法格式:前缀名:标签

平时最常使用的就是核心标签了,我们来看看核心标签中都有哪些常用标签

set标签:将值保存在指定的作用域中

<%-- var="变量名"  value="值" scope="保存在哪个作用域(page、request、session、application)"--%>
<c:set var="userName" value="yzq" scope="page"></c:set>
<span>${ 
   userName}</span><%--配合EL表达式取值--%>

out标签:将结果输出

<%--取值--%>
<c:out value="${userName}"></c:out>

remove标签:删除某个值

<%--删除userName的值--%>
<c:remove var="userName"></c:remove>

if标签:判断

在之前的jsp中我们如果要对数据进行判断后显示符合条件的数据,要这么写。

<%--JSP程序脚本--%>

<%
    /* * 这里可以写变量声明,表达式,程序逻辑等 * 是局部的,相当于Java中的普通方法 * */
    String name = "yzq";
    int age = 23;
    if (age > 20) { 
   
%>

<span>奔三的人了</span>
<%

} else { 
   
%>

<span>奔二的人了</span>
<%
    }
%>

看起来是不是很费劲,当然写起来更费劲。
而是用JSTL的if标签就很简单了
test接收判断条件的值

<c:if test="${age>20}">

    <span>奔三的人了</span>

</c:if>

choose:选择,跟java中的switch语句类似

作为when标签和otherwise标签的父标签

<c:set var="age" scope="page" value="40"></c:set>
<c:choose>

    <%--符合该条件时执行--%>
    <c:when test="${age>20&&age<30}">
        <span>奔三的人了</span>
    </c:when>

    <%--符合该条件时执行--%>
    <c:when test="${age<20}">
        <span>还是小鲜肉</span>

    </c:when>

    <%--之前条件都不满足时,执行这个--%>
    <c:otherwise>

        <span>可以考虑养生了</span>

    </c:otherwise>
</c:choose>

forEach标签:用于迭代集合

我们来一个servlet,用于创建一个集合数据,放到request中,User中就两个属性,name和age。

package servlet;

import data.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "JstlServlet",urlPatterns = "/jstl")
public class JstlServlet extends HttpServlet { 
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
   

        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
   

        List<User> users = new ArrayList<>();

        for (int i = 0; i < 10; i++) { 
   
            users.add(new User("yzq", i));
        }


        request.setAttribute("users", users);
        request.getRequestDispatcher("/jstl.jsp").forward(request, response);

    }
}

在jsp中迭代集合并显示数据,其中items表示集合数据,var表示迭代出的数据的变量名

<%--迭代标签 用于迭代集合--%>
<c:forEach items="${users}" var="user">

    <span>${ 
   user.name}</span>:<span>${ 
   user.age}</span>
    <br>

</c:forEach>

执行结果
这里写图片描述

foreach标签还有一些其他的属性

begin  :从哪个下标开始迭代,默认值为0
end:迭代到第几个,默认值为集合的长度
step:迭代的步长
varStatus:迭代项的状态变量名,可以获取迭代项的相关状态

我们来看看用法

<%--迭代标签 用于迭代集合--%>
<c:forEach items="${users}" var="user" begin="2" end="6" step="2" varStatus="userStatus">


    <hr>
    <span>${ 
   user.name}</span>:<span>${ 
   user.age}</span><br>

    计数:${ 
   userStatus.count} <br>
    步长:${ 
   userStatus.step} <br>
    开始位置: ${ 
   userStatus.begin} <br>
    结束位置:${ 
   userStatus.end} <br>
    下标:${ 
   userStatus.index} <br>
    是否是第一个:${ 
   userStatus.first} <br>
    是否是最后一个:${ 
   userStatus.last}<br>


</c:forEach>

执行结果:
这里写图片描述

EL表达式和JSTL常用的基本上就这些,比较简单.
还是那句话,jsp相关的技术简单了解知道怎么回事就行,不必花太多时间去学习。

下一篇,我们来实际的走一个网络请求的流程:

Java Web之Ajax


如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164755.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • nginx日志格式配置

    nginx日志格式配置nginx作为我们IT中的首选反向代理神器,有时候我们有必要查看nginx中的日志的,但是我们对nginx的日志格式不是很了解怎么办呢?这样以来也是看不懂的。nginx日志nginx的日志分两种一种是access.log一种是error.log。access.log日志为访问日志,也就是相当于流水账记录所有的日志,而error不同只记录错误错误的请求。这两种日志对于我们来说都非常重要。同时这两…

  • 如何理解95%置信区间_95的置信区间和90的置信区间

    如何理解95%置信区间_95的置信区间和90的置信区间1.点估计与区间估计首先我们看看点估计的含义:是用样本统计量来估计总体参数,因为样本统计量为数轴上某一点值,估计的结果也以一个点的数值表示,所以称为点估计。点估计虽然给出了未知参数的估计值,但是未给出估计值的可靠程度,即估计值偏离未知参数真实值的程度。接下来看下区间估计:给定置信水平,根据估计值确定真实值可能出现的区间范围,该区间通常以估计值为中心,该区间则为置信区间。2.中心…

  • python字符串的使用方法_python字符串交叉

    python字符串的使用方法_python字符串交叉python字符串常用方法find(sub[,start[,end]])在索引start和end之间查找字符串sub​找到,则返回最左端的索引值,未找到,则返回-1​start和end都可

  • apache服务器搭建教程_apache本地服务器

    apache服务器搭建教程_apache本地服务器一、下载安装配置服务器1.下载1.百度搜索downlaodapache2.选择windows版本http://httpd.apache.org/download.cgi3.http://httpd.apache.org/docs/current/platform/windows.html#down4.下载下载解压后,目录结构2..配置配置文件位置:Apache24/conf/httpd.conf1.配置根目录(SRVROOT)$…

  • 国家授时中心NTP服务器地址

    国家授时中心NTP服务器地址国家授时中心新的NTP服务器地址:ntp.ntsc.ac.cn

  • 语音合成学习(一)综述

    语音合成学习(一)综述一、资料推荐爱丁堡大学课程(全英文,有能力的推荐学习一遍):https://speech.zone/courses/speech-synthesis/TensorflowTTS(比较系统的开源项目):https://github.com/TensorSpeech/TensorFlowTTS二、基础概念介绍1、时域:波形的振幅、频率;2、频域:傅里叶变换:每个复杂的波形都可以由不同频率的正弦波组成;语谱(spectrum):描述了信号包含的频率成分和它们的幅度;语谱图(spectrogram

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号