当前位置: 首页 > news >正文

JSPv2之El

()EL的基本语法

1优点

       1 jsp的java太长了,el自己的语言${ 开始       }结束

        2el直接返回空字符转,而java直接报错        

       3使用“lt”代替“<”运算符,如果运算符后面是数字,在运算符

        *EL取值时,没有数组的下标越界,没有空指针异常,没有字符串的拼接。

       

2java请求转发到jsp里

el与jsp对比

  • 2RequestDispatcher dispatcher = request
            .getRequestDispatcher("/myjsp.jsp");
  • request.getRequestDispatcher("/myjsp.jsp") 是一个方法调用,它返回一个 RequestDispatcher 对象,该对象可以用于将请求转发到 "/myjsp.jsp" 这个资源。

3作用域

pageContext..JSP的作用域(request、 session、 application 以及page)EL不仅可以访问一般变量,还可以访问JavaBean中的属性、嵌套属性和集合对象。

4.中括号

如“-”或“?”等非字母或数字的符号,就只能使用中括号运算符访问该属性。中括号运算符的用法示例如下:${user["My-Name"]}

什么时候用:联合使用集合里有多个对象,对象又有属性${users[0].userName}

一般情况可以互换

${student.name}等价于${student["name"]}。

()EL中常见的隐式对象

可分为5种

1pageContext    ${pageContext.request.requestURI}对象对象的属性

<body>

  请求URI为:${pageContext.request.requestURI} <br />

  Content-Type响应头:${pageContext.response.contentType} <br />

  服务器信息为:${pageContext.servletContext.serverInfo} <br />

  Servlet注册名为:${pageContext.servletConfig.servletName} <br />

</body>

2.4个scope

最后会打印itcase因为找的顺序是pageScope、requestScope、 sessionScope和applicationScope都可以通过setAttribute()方法存储属性,通过getAttribute()方法获取属性

<%@ page language="java" contentType="text/html; charset=utf-8"%>

<html>

<head></head>

<body>

  <% pageContext.setAttribute("userName", "itcast"); %>

  <% request.setAttribute("bookName", "Java Web"); %>

  <% session.setAttribute("userName", "itheima"); %>

  <% application.setAttribute("bookName", "Java 基础"); %>

  表达式\${pageScope.userName}的值为:${pageScope.userName} <br />

  表达式\${requestScope.bookName}的值为:${requestScope.bookName} <br />

  表达式\${sessionScope.userName}的值为:${sessionScope.userName} <br />

  表达式\${applicationScope.bookName}的值为:${applicationScope.bookName} <br />

  表达式\${userName}的值为:${userName}

</body>

</html>

3param对象用于获取请求参数的某个值与request.getParameter()方法相同

,它是Map类型

例子:获取客户端请求参数的值

${param.num}获取一个

${paramValues.nums[0]} 获取数组

<body style="text-align: center;">

  <form action="${pageContext.request.contextPath}/param.jsp">

  num1:<input type="text" name="num1"><br />

  num2:<input type="text" name="num"><br />

  num3:<input type="text" name="num"><br /> <br />

  <input type="submit" value="提交" />&nbsp;&nbsp;

  <input type="submit" value="重置" /><hr />

  num1: ${param.num1} <br />

  num2: ${paramValues.num[0]} <br />

  num3: ${paramValues.num[1]} <br />

  </form>

</body>

4Cookie隐式对象,第一次只有cookie字段,第二次才会获取对象和值

第一次访问服务器时,服务器会向浏览器回写一个Cookie,此时的Cookie信息是存储在浏览器中的,当刷新浏览器,

第二次访问cookie.jsp页面时,由于浏览器中已经存储了名为userNameCookie信息,浏览器会将此Cookie信息一同发送给服务器,这时使用表达式${cookie.userName.name }${cookie.userName.value }便可以获取Cookie的名称和值。

一开始访问一下都是空

获取cookie对象的信息:${cookie.userName}

获取cookie对象的名称:${cookie.userName.name}

获取cookie对象的值:${cookie.userName.value}

5initParam获取(web.xml里面)参数的值

Web应用初始化值

${initParam.author}

()JSTL标签库

JSTL

1在使用这些标签库前,必须在JSP页面的顶部使用<%@ taglib%>指令定义引用的标签库和访问前缀。

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

用于输出文本内容的<c:out>标签、用于条件判断的<c:if>标签、用于迭代循环的<c:forEach>标签

2.格式标签库Fmt

SQL标签库sql

XML标签库xml

函数标签库fn

每个厂商都有一个标签库,所以jsp里面要自定义标签

()JSTL的下载与使用

jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)。

Tld

写上核心地址

()Core标签库中的常用标签

1<c:out>语法       escapeXml属性default属性value属性

escapeXml=true下面就不会编码输出

输出:<meta http-equiv="refresh" content="0;url=http://www.itcast.cn" />

单标签<c:out value="value" [default="defaultValue"]

双标签<c:out value="value" [escapeXml="{true|false}"]>unknown</c:out>

输出都是unknown

可以在网页里面直接传入键值输出

2<c:remove>移除标签

<c:remove var="name" [scope=”范围”]/>

范围pagerequestsessionapplication

3<c:if>标签,     

双标签在标签体中指定要输出的内容

<c:if test="testCondition" var="result"

[scope="{page|request|session|application}"]>

  body content

</c:if>

<c:choose>标签,该标签用于指定多个条件选择的组合边界,它必须与<c:when><c:otherwise>标签一起使用。

<c:when>都不成立就执行<c:otherwise>里面语句

<body>

  <c:choose>

     <c:when test="${empty param.username}">

      unKnown user.

      </c:when>

     <c:when test="${param.username=='itcast' }">

      ${ param.username} is manager.

      </c:when>

     <c:otherwise>

       ${ param.username} is employee.

      </c:otherwise>

  </c:choose>

</body>

可以用c_choose.jsp?username=itcast传参

4.<c:forEach>标签   

 双标签:迭代指定范围内的集合start,end,步长就行

迭代包含多个对象的集合

<%

  List colorsList=new ArrayList();

  colorsList.add("red");

  colorsList.add("yellow");

  colorsList.add("blue");

  colorsList.add("green");

  colorsList.add("black");

  %>

  <c:forEach var="color" items="<%=colorsList%>" begin="1"

     end="3" step="2">

  ${color}&nbsp;

  </c:forEach>

5.url标签 

双标签中构造URL参数

其中<c:param>标签用于获取URL地址中的附加参数,<c:url>标签用于按特定的规则重新构造URL,<c:redirect>标签负责重定向。

<c:url>的var属性:用于指定将构造的URL地址保存到域对象的属性名称。

 <body>

 使用绝对路径构造URL:<br />

 <c:url var="myURL"

        value="http://localhost:8080/chapter07/c_out1.jsp">

     <c:param name="username" value="张三" />

 </c:url>

 <a href="${myURL}">c_out1.jsp</a><br />

 使用相对路径构造URL:<br />

 <c:url var="myURL"

  value="c_out1.jsp?username=Tom" />

 <a href="${myURL}">c_out1.jsp</a>

var  value就可以

参数值进行编码

相关文章:

JSPv2之El

​ (一)EL的基本语法 1优点 1 jsp的java太长了,el自己的语言${ 开始 }结束 2el直接返回空字符转,而java直接报错 3使用“lt”代替“<”运算符&#xff0c;如果运算符后面是数字&#xff0c;在运算符 *EL取值时&#xff0c;没有数组的下标越界&#xff0c;没有…...

出现 gpg: cancelled by user时的处理方法

今天在使用git commit -S -m "comment" check in 代码的时候&#xff0c; 莫名其妙出现了以下错误&#xff1a; gpg: cancelled by user经过在网上查询资料&#xff0c; 本质原因是GnuPG没有$(tty)的读写权限&#xff0c;有以下两种解决方法是靠谱的&#xff1a; c…...

MySQL中表的增删改查

目录 一、CRUD 二、新增&#xff08;Create&#xff09; &#xff08;1&#xff09;语法 &#xff08;2&#xff09;单行数据全列插入 &#xff08;3&#xff09;多行数据指定列插入 三、查询&#xff08;Retrieve&#xff09; &#xff08;1&#xff09;语法 …...

web.py python服务器两种模板template使用方法

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多python应用或算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 web.py是Python Web框架之一&#xff0c…...

Flutter 01 目录结构入门

一、Flutter目录结构&#xff1a; 二、Flutter入口文件、入口方法&#xff1a; 三、Flutter Demo&#xff1a; demo1&#xff1a; import package:flutter/material.dart;//MaterialApp 和 Scaffold两个组件装饰App void main() {runApp(MaterialApp(home: Scaffold(appBar: A…...

Esxi安装OpenWrt

最近折腾下软路由主要就是实现局域网内的上网。 1.StarWind V2V Converter下载 先去下载个StarWind V2V Converter&#xff0c;觉得麻烦我在网上有找到一个博主的地址点击这里。 这是官网地址传送门&#xff0c;然后一阵乱输入点击下载 然后 双击之后无脑下一步即可。 2.Op…...

tuple 简易实现(C++ 模板元编程)

std::tuple 在标准库里面&#xff0c;tuple主要有下面四个类模板 or 函数模板 tupletuple_sizetuple_elementget 在后续有实现&#xff1a;tuple_size_v tuple_size::value和tuple_element_t tuple_element::type。 事例Example&#xff1a; auto tup std::tuple<in…...

Http代理与socks5代理有何区别?如何选择?(二)

上篇文章我们基本分别了解了http代理与socks5代理的定义与优缺点&#xff0c;接下来我们继续来了解http代理与socks5代理之间的比较与区别。 一、两者的比较 1、功能比较 HTTP代理专门用于Web流量&#xff0c;并在处理HTTP和HTTPS协议方面非常高效。它们可以修改正在传输的数…...

java中main方法和@Test注解的区别

Java的main方法和Test注解在用途和功能上有很大的区别。 main方法是Java应用程序的入口点。当你运行一个Java程序时&#xff0c;JVM会首先查找具有public static void main(String[] args)签名的类&#xff0c;并从这个方法开始执行程序。main方法通常用于控制程序的启动、执行…...

C++进阶语法——STL 标准模板库(下)(Standard Template Library)【学习笔记(七)】

文章目录 STL 代码示例1、迭代器2、算法3、array容器示例4、vector示例5、deque&#xff08;double ended queue&#xff0c;双端数组&#xff09;示例6、list&#xff08;链表&#xff09;容器7、set示例8、map示例9、stack 示例10、queue示例11、priority_queue &#xff08;…...

力扣:求最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 示例1: 输入: strs ["flower", "flow" , "flight"] 输出: "fl" 示例2: 输入: strs ["dog","racecar","car&…...

Redis入门04-消息通知

目录 Redis中的消息通知 命令行操作 Redis中的管道 Redis中的消息通知 Redis可以用作消息队列的中间件&#xff0c;它提供了一种轻量级、高性能的消息传递机制&#xff0c;适用于实时通信、任务队列、事件处理等各种应用。以下是有关如何使用Redis作为消息队列的一些重要信…...

关于idea使用的一些操作设置

关于idea使用的一些操作设置 1. 常用的一下设置1.1 快捷键相关1.2 配置自动生成注释&#xff08;类、方法等&#xff09;1.3 maven项目相关1.4 常见其他的一些操作设置 2. IntelliJ IDEA 取消param注释中参数报错提示3. idea同时打开多个文件&#xff0c;导航栏不隐藏、自动换行…...

CLion 2023.2.2(C ++ IDE智能代码编辑器)

CLion 2023是一款跨平台C/C集成开发环境&#xff08;IDE&#xff09;。它为Mac用户提供了高效的编程体验&#xff0c;帮助程序员们在Mac平台上进行C/C开发。 CLion 2023支持多种编译器和调试器&#xff0c;并具有强大的代码分析和导航功能。它还为用户提供了许多便捷的工具和插…...

企业级API资产如何管理

在当今数字化时代&#xff0c;API已成为企业开发和创新的重要工具&#xff0c;如何高效地管理和调度这些资产成为了企业发展的重要课题。API资产管理的出现&#xff0c;为企业解决了这一难题&#xff0c;通过合理管理和利用API资产&#xff0c;企业可以更好地推动业务发展&…...

Git https方式拉的代码IDEA推送代码报错

报错信息 fatal: could not read Username for ‘https://codehub-cn-south-1.devcloud.huaweicloud.com’: No such file or directory 18:18:39.885: [recovery_pattern] git -c credential.helper -c core.quotepathfalse -c log.showSignaturefalse push --progress --porc…...

C++ capacity()用法总结

1. 容器的容量 容器的size是指它已经保存的元素的数目&#xff1b;而capacity则是在不分配新的内存空间的前提下它最多可以保存多少元素。capacity()&#xff0c;size()&#xff0c;reserve()&#xff0c;resize()这几个都是不太容易区分的函数 functionmeancapacity()获得容…...

TensorFlow2.0教程1-Eager

文章目录 张量极其操作1 张量自定义层一、网络层layer的常见操作二、实现自定义网络层三、网络层组合自动求导一、Gradient tapes二、记录控制流三、高阶梯度自定义训练(基础)一、Variables二、示例:拟合线性模型1、定义模型2.定义损失函数3.获取训练数据4.定义训练循环张…...

Redis学习系统(持续更新中)

RedisExample 课程介绍 目标是提供一个高效、可靠的学习和实践Redis的环境。我们将通过搭建Redis集群、实现缓存数据的持久化存储、制定缓存数据的淘汰策略以及同步缓存数据等步骤来深入了解和学习Redis的特性和功能。通过这个项目&#xff0c;你可以掌握Redis的核心概念和技…...

el-select获取id和name

一般选中节点只会返回:value绑定的数据给v-model中&#xff0c;要想获取id和name一并传给后端&#xff0c;需要如下几步&#xff1a; 1、给选择框添加点击事件 input"selectChangeParent" 2、v-for中多添加一个参数 index <el-select v-model"inputForm.pr…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...