当前位置: 首页 > 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…...

新手必须掌握的6个Python爬虫库,非常实用!

Python中有非常多用于网络数据采集的库&#xff0c;功能非常强大&#xff0c;有的用于抓取网页&#xff0c;有的用于解析网页&#xff0c;这里介绍6个最常用的库。 1. BeautifulSoup BeautifulSoup是最常用的Python网页解析库之一&#xff0c;可将 HTML 和 XML 文档解析为树形…...

终极LoRaWAN服务器搭建指南:如何快速构建你的私有物联网网络

终极LoRaWAN服务器搭建指南&#xff1a;如何快速构建你的私有物联网网络 【免费下载链接】lorawan-server Compact server for private LoRaWAN networks 项目地址: https://gitcode.com/gh_mirrors/lo/lorawan-server 你是否想拥有一个完全可控的LoRaWAN物联网平台&…...

AIGlasses_for_navigation 开发环境快速配置:Anaconda虚拟环境指南

AIGlasses_for_navigation 开发环境快速配置&#xff1a;Anaconda虚拟环境指南 你是不是也遇到过这种情况&#xff1a;好不容易在本地跑通了一个项目&#xff0c;换台电脑或者更新了几个库&#xff0c;结果就报了一堆莫名其妙的错误。或者&#xff0c;你想同时维护两个需要不同…...

Power BI视觉对象交互设计秘籍--巧用书签按钮实现动态提示

1. 为什么需要动态提示功能&#xff1f; 做数据分析报表最怕什么&#xff1f;不是数据不准&#xff0c;而是看报表的人看不懂。我见过太多这样的场景&#xff1a;精心设计的柱状图被用户误读&#xff0c;复杂的折线图被理解成完全相反的趋势。这时候你会想&#xff0c;要是有个…...

HARMONYOS应用实例246:互动七巧板拼图

项目二:互动七巧板拼图 功能介绍: 本应用模拟了中国传统智力玩具七巧板。屏幕上展示7块几何形状(三角形、正方形、平行四边形),支持拖动平移和点击旋转操作。用户可以自由拼接图形,拼出各种造型。该应用帮助学生直观理解图形的平移、旋转、对称等几何变换,以及面积守恒…...

从LTE到5G-Advanced:载波聚合(CA)技术演进全解析与网络工程师调试指南

从LTE到5G-Advanced&#xff1a;载波聚合技术深度演进与实战调试手册 当你在凌晨三点的基站机房盯着屏幕上跳动的KPI指标&#xff0c;突然发现某个5G小区下行速率始终无法突破800Mbps——这很可能是一个典型的载波聚合配置问题。作为网络优化工程师&#xff0c;我们每天都在与这…...

libtorrent会话管理终极指南:10个关键配置参数详解

libtorrent会话管理终极指南&#xff1a;10个关键配置参数详解 【免费下载链接】libtorrent an efficient feature complete C bittorrent implementation 项目地址: https://gitcode.com/gh_mirrors/li/libtorrent libtorrent是一个高效且功能完善的C BitTorrent实现&a…...

Obsidian插件终极汉化指南:obsidian-i18n让英文插件秒变中文界面

Obsidian插件终极汉化指南&#xff1a;obsidian-i18n让英文插件秒变中文界面 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n 你是否因为Obsidian插件的英文界面而头疼&#xff1f;面对"Backlink"、"Graph …...

服装打版辅助新思路:Nano-Banana软萌拆拆屋结构化拆解应用

服装打版辅助新思路&#xff1a;Nano-Banana软萌拆拆屋结构化拆解应用 1. 引言&#xff1a;当服装设计遇见“拆解魔法” 想象一下&#xff0c;你是一位服装设计师&#xff0c;面对一件构思精巧的连衣裙&#xff0c;如何向打版师清晰地传达它的内部结构&#xff1f;是画一堆复…...

Arrow:可视化节点系统如何解决游戏叙事设计中的效率瓶颈

Arrow&#xff1a;可视化节点系统如何解决游戏叙事设计中的效率瓶颈 【免费下载链接】Arrow Game Narrative Design Tool 项目地址: https://gitcode.com/gh_mirrors/arrow/Arrow 在游戏开发的深夜&#xff0c;叙事设计师李明正对着屏幕上密密麻麻的剧情分支图发愁。这个…...