servlet-EL表达式与JSTL标签「建议收藏」

servlet-EL表达式与JSTL标签「建议收藏」EL表达式EL表达式的作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出。因为EL表达式在输出数据的时候,要比jsp表达式脚本要简洁的多格式$(表达式)<%@ page import=”java.util.Map” %><%@ page import=”java.util.HashMap” %><%@ page contentType=”text/html;charset=UTF-8″ language=”java” %><h

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

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

EL表达式

EL表达式的作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出。因为EL表达式在输出数据的时候,要比jsp表达式脚本要简洁的多
格式
$(表达式)

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body >

    <%
        request.setAttribute("key","值");
    %>

    <%=request.getAttribute("key")==null?"":request.getAttribute("key")%>
    %{ 
   key}
</body>
</html>

EL表达式主要是在jsp页面中输出数据,主要是输出域(request,session,application,pageContext)对象中的数据。
当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。

EL表达式可以输出Bean的普通属性,数组属性,List集合属性,map集合属性。

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.atguigu.java.Person" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body >

<%
    Person person = new Person();
%>

    ${ 
   person.name}
    ${ 
   person.Map}
    ${ 
   person.list}
</body>
</html>

同样的EL表达式还支持关系运算,逻辑运算,算术运算,empty运算,点运算和中括号运算

EL表达式中十一个隐含对象

  • pageContext pageContextImpl 可以获取jsp中的九大内置对象
  • pageScope Map<String,Object> 它可以获取pageContext域中的数据
  • requestScope Map<String,Object> 它可以获取Request域中的数据
  • sessionScope Map<String,Object> 它可以获取Session域中的数据
  • applicationScope Map<String,Object> 它可以获取ServletContext域中的数据,
  • param Map<String,String>它可以获取请求参数的值
  • paramValues Map<String,String[]> 它可以获取请求参数的值,获取多个值的时候使用
  • header Map<String,String> 它可以获取请求头的信息
  • header Map<String,String[]> 它可以获取请求头的信息
  • initParam Map<String,String> 它可以获取在web,xml中配置的上下文参数

·EL获取4个特定域中的属性
pageScope,requestScope,sessionScope,applicationScope
${requestScope.key2}

pageContext对象常用于获取一下信息

  1. 协议
  2. 服务器ip
  3. 服务器端口
  4. 获取工程路径
  5. 获取请求方法
  6. 获取客户端ip地址
  7. 获取回话的id编号
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/1/16
  Time: 12:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%=request.getScheme()%>
    ${ 
   pageContext.request.scheme}<!--EL表达式不用谢get-->
</body>
</html>


JSTL标签

JSTL标签库是一个不断完善的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更加简洁。

在这里插入图片描述

语法
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

核心标签
<c:out> 用于在JSP中显示数据,就像<%= … >
<c:set> 用于保存数据
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 基础迭代标签,接受多种集合类型
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL
格式化标签
fmt:formatNumber 使用指定的格式或精度格式化数字
fmt:parseNumber 解析一个代表着数字,货币或百分比的字符串
fmt:formatDate 使用指定的风格或模式格式化日期和时间
fmt:parseDate 解析一个代表着日期或时间的字符串
fmt:bundle 绑定资源
fmt:setLocale 指定地区
fmt:setBundle 绑定资源
fmt:timeZone 指定时区
fmt:setTimeZone 指定时区
fmt:message 显示资源配置文件信息
fmt:requestEncoding 设置request的字符编码

SQL标签
sql:setDataSource 指定数据源
sql:query 运行SQL查询语句
sql:update 运行SQL更新语句
sql:param 将SQL语句中的参数设为指定值
sql:dateParam 将SQL语句中的日期参数设为指定的java.util.Date 对象值
sql:transaction 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行
XML 标签
<x:out> 与<%= … >,类似,不过只用于XPath表达式
<x:parse> 解析 XML 数据
<x:set> 设置XPath表达式
<x:if> 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach> 迭代XML文档中的节点
<x:choose> <x:when>和<x:otherwise>的父标签
<x:when> <x:choose>的子标签,用来进行条件判断
<x:otherwise> <x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform> 将XSL转换应用在XML文档中
<x:param> 与<x:transform>共同使用,用于设置XSL样式表

JSTL函数
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首尾的空白符


举例

<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.atguigu.java.Person" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/1/16
  Time: 12:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        ArrayList<Person> people = new ArrayList<>();
        for(int i = 0;i < 10;i ++){ 
   
            people.add(new Person("1","username" + i,"pass" + i));
        }
        request.setAttribute("person",Person);
    %>

    <c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu">
        <tr>
            <td>${ 
   stu.id}</td>
            <td>${ 
   stu.username}</td>
            <td>${ 
   stu.password}</td>
            <td>${ 
   status.first}</td>
        </tr>
    </c:forEach>
</body>
</html>

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168937.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql connector安装教程_Debezium:mysql connector安装[通俗易懂]

    mysql connector安装教程_Debezium:mysql connector安装[通俗易懂]前言:debezium提供了多种基于kafka的连接器,方便对RDB做数据流处理,包括:MongoDB,Oracle,Mysql,SqlServer,Postgresql,可扩展性强,代码可控,本篇介绍基于mysql的安装使用插件版本:Kafka:CDK3.10(相当于Kafka1.1版本),这里需要kafka0.10以上版本才能支持Debezium:0.83Mysql:5.5(mysql5…

    2022年7月15日
    12
  • 一些常见的第三方UI库[通俗易懂]

    一些常见的第三方UI库[通俗易懂]第三方UI库1bootstrapBootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师MarkOtto和JacobThornton合作开发,是一个C

    2022年8月4日
    7
  • DHCP协议简述

    DHCP协议简述DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCPServer…

    2022年5月24日
    43
  • linux系统的7种banding方式「建议收藏」

    linux系统的7种banding方式「建议收藏」深度分析Linux下双网卡绑定七种模式2012年05月24日Linux平台评论数22浏览:8850Views今天分享的是linux操作系统下双网卡绑定有哪七种模式,分别是如何工作的。现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多。而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对w…

    2022年10月13日
    0
  • 网孔型高级维修电工实训装置

    网孔型高级维修电工实训装置ZN-88CCV网孔型高级维修电工实训装置一、概述ZN-88CCV网孔型高级维修电工实训装置主要由实训桌、网孔板、实训元器件(也可自购)组成。学生根据实训线路进行元器件的合理布局,安装、接线全部由学生自行完成,接近工业现场,能完成电工基础电路,电机控制线路,照明配电的模拟操作,PLC可编程综合应用线路,电子技术应用电路的综合实训,通过一系列项目实训培养学生动手能力和实操技能。实训项目可自行确定,根据所选的项目选择相应的元器件。该装置也可作为电工考工的考核设备。二、特点1、实训采用网孔板与挂箱相结合

    2022年6月6日
    29
  • pycharm激活码2021年【注册码】

    pycharm激活码2021年【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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