jsp el jstl_servlet还有人用吗

jsp el jstl_servlet还有人用吗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/168815.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 上午11:00
下一篇 2022年8月8日 上午11:00


相关推荐

  • linux进程通信之信号[通俗易懂]

    linux进程通信之信号

    2022年1月21日
    42
  • 如何把.ipynb文件转化为.py文件

    如何把.ipynb文件转化为.py文件第一种方法是 在 ipynb 文件所在的目录下打开一个终端 然后输入 jupyternbcon ipynb 就能把当前文件夹下面的所有的 ipynb 文件转化为 py 文件 第二种方法是 step1 启动 Jupyternoteb 在浏览器中 找到 ipynb 文件所在目录 step3 打开该 ipynb 文件 点击 Files Downloadas Python 即可下载转换好的 Python 文件 如果需要的话 也可以转换为列表中的其

    2026年3月26日
    2
  • 进一步详解WSGI

    进一步详解WSGI还是老样子 需要知道什么是 WSGI 一 什么是 WSGI 1 WSGI Web 服务器网关接口 是 python 中所定义的 Web 服务器和 Web 应用程序之间或框架之间的接口标准规范 2 WSGI 接口规范的目的就是规范 Web 服务器与 Web 应用之间的交互 在协议之间进行转换 3 WSGI 将 Web 组件分成三类 Web 服务器 Server Web 中间件与 Web 应用程序

    2026年3月19日
    1
  • 负数二进制转换十进制

    负数二进制转换十进制题目 设某单字节整数的二进制形式为 其分别作为有符号和无符号整数转换成十进制的形式为负数 取反码 末位 1

    2026年3月17日
    2
  • AI副业风向标 | 普通人如何用AI做自媒体矩阵,月入3000-30000元?(保姆级教程)

    AI副业风向标 | 普通人如何用AI做自媒体矩阵,月入3000-30000元?(保姆级教程)

    2026年3月15日
    2
  • QT之二级菜单

    QT之二级菜单QT之二级菜单QT之二级菜单开场白效果图上代码可参考文章下代码结尾开场白今天我们一起来了解下,在我们QT中,二级菜单是如何实现的,在上篇我们学习了QT之系统托盘,QT之自定义菜单,QT之样式styleSheet。今天我们在这基础上,增加二级菜单的功能。效果图大家注意下这里箭头,不是用的默认效果哦,还是自定义的好看哈!O(∩_∩)下面这张图示是默认的。上代码voi

    2022年5月4日
    147

发表回复

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

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