JSPv2之El

news2025/1/18 9:07:25

()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就可以

参数值进行编码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问答平台完整源码系统+知识科普+业界新闻 带完整的部署教程

目前&#xff0c;人们对于获取各种信息和知识的需求越来越大。传统的搜索引擎虽然可以提供大量的信息&#xff0c;但它们往往不能提供针对性的、准确的答案。因此&#xff0c;问答平台作为搜索引擎的一种补充&#xff0c;越来越受到用户的欢迎。开发问答平台的初衷是为了解决人…

亚马逊,美客多,temu新品推广期,如何快速增加review

在亚马逊的排名算法中&#xff0c;Review是一个非常重要的因素。好的Review可以直接提升产品的排名&#xff0c;带来更多的曝光量和流量&#xff0c;进而产生更多的订单。因此&#xff0c;卖家非常重视自己产品的Review数量和星级。产品的Review评分越高&#xff0c;排名越靠前…

4 Tensorflow图像识别模型——数据预处理

上一篇&#xff1a;3 tensorflow构建模型详解-CSDN博客 本篇开始介绍识别猫狗图片的模型&#xff0c;内容较多&#xff0c;会分为多个章节介绍。模型构建还是和之前一样的流程&#xff1a; 数据集准备数据预处理创建模型设置损失函数和优化器训练模型 本篇先介绍数据集准备&am…

Power BI 傻瓜入门 21. 让引人注目的报告变得可访问和用户友好的十种方法

Power BI中读取报告和可视化的能力不应仅限于那些能够区分颜色或能够独立阅读的人。色盲用户&#xff0c;甚至那些需要辅助技术来帮助他们解释数据的用户呢&#xff1f;不应该仅仅因为他们有一个独特的要求就把他们蒙在鼓里。使用Power BI&#xff0c;您可以无缝地整合许多功能…

电脑蓝屏怎么办?3个方法教你快速修复

电脑蓝屏&#xff0c;也被称为蓝屏死机&#xff0c;是计算机用户可能会遇到的一种常见问题。蓝屏通常伴随着错误代码和计算机重新启动&#xff0c;可能导致数据丢失。然而&#xff0c;幸运的是&#xff0c;电脑蓝屏问题通常可以得到解决。在本文中&#xff0c;我们将介绍电脑蓝…

通过51单片机控制28byj48步进电机按角度正反转旋转

一、前言 本项目基于STC89C52单片机&#xff0c;通过控制28BYJ-48步进电机实现按角度正反转旋转的功能。28BYJ-48步进电机是一种常用的电机&#xff0c;精准定位和高扭矩输出&#xff0c;适用于许多小型的自动化系统和机械装置。 在这个项目中&#xff0c;使用STC89C52单片机…

IP地址证书申请注意事项

IP地址证书申请跟常见的域名证书有所区别&#xff0c;首先确保80端口或者443端口处于开放状态&#xff0c;让CA机构在验签过程中能够正确访问到验证值&#xff0c;其实IP地址证书只能采用服务器文件验证&#xff0c;即把CA机构生成的服务器文件TXT文本上传到服务器根目录&#…

VueJs各个版本— 判断当前是开发、生产环境

VueJs各个版本— 判断当前是开发、生产环境 文章目录 VueJs各个版本— 判断当前是开发、生产环境vue项目分类VueCLI21&#xff0c;判断样例2&#xff0c;判断原理 Vue CLI 3 和 Vue CLI 41&#xff0c;判断样例2, 判断原理手动设置-json文件手动设置- .env 文件单个 .env 文件多…

python 数据挖掘库orange3 介绍

orange3 是一个非常适合初学者的data mining library. 它让使用者通过拖拽内置的组件来形成工作流。让你不需要写任何代码就可以体验到数据挖掘和可视化的魅力。 它的桌面如下&#xff0c;这里我创建了 3 个节点&#xff0c;分别是数据集、小提琴图&#xff0c;散点图 其中 …

数据结构与算法:使用数组模拟队列Java版

逻辑分析 代码实现 package com.haimeng.queue;import java.util.Scanner;public class ArrayQueueDemo {public static void main(String[] args) {//测试一把//创建一个队列ArrayQueue queue new ArrayQueue(3);char key ; //接收用户输入Scanner scanner new Scanner(S…

使用 Appilot 部署 Llama2,会聊天就行!

Walrus 是一款基于平台工程理念的应用管理平台&#xff0c;致力于解决应用交付领域的深切痛点。借助 Walrus 将云原生的能力和最佳实践扩展到非容器化环境&#xff0c;并支持任意应用形态统一编排部署&#xff0c;降低使用基础设施的复杂度&#xff0c;为研发和运维团队提供易用…

最常见的激活函数

文章目录 1. 激活函数2. Sigmoid函数3. RelU函数4. Softmax函数 1. 激活函数 1. 神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值&#xff0c;并将输入值传递给下一层&#xff0c;输入层神经元节点会将输入属性值直接传递给下一层&#xff08;隐层或输…

软件开发项目文档系列之九如何撰写测试用例

目录 1 概述1.1 编写目的1.2 定义1.3 使用范围1.4 参考资料1.5 术语定义 2 测试用例2.1 功能测试2.1.1 用户登录功能2.1.2 商品搜索功能 2.2 性能测试2.2.1 网站响应时间2.2.2 并发用户测试 附件&#xff1a; 测试用例撰写的要素和注意事项附件1 测试用例要素附件2 测试用例的注…

全志XR806实现简单的家用环境监测传感器

XR806是一款支持WiFi和BLE的高集成度无线MCU芯片, 以其集成度高、硬件设计简单、BOM成本低、安全可靠等优点, 成为极客们进行小开发创作的首选. 恰好最近获得了XR806开发板的试用资格,因此决定基于此开发板制作一个简单的家用环境监测传感器. 1.功能介绍 作为一个环境监测传感…

在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作实现过程

在一个循环链队中只有尾指针&#xff08;记为rear&#xff0c;结点结构为数据域data&#xff0c;指针域next&#xff09;&#xff0c;请给出这种队列的入队和出队操作实现过程 入队过程如下图&#xff1a; 先创一个结点&#xff0c;用于存储要插入的结点数据 然后就是老套路了…

开槌在即:陈可之油画|《我的星辰》

《我的星辰》 尺寸&#xff1a;46x46cm 陈可之2020年绘 “星辰大海&#xff0c;梦想自有梦想的力量&#xff0c;仰望在银河的想象&#xff0c;我们启航。”读着画名&#xff0c;凝视着画&#xff0c;脑海里回荡着《星辰大海》的旋律。油画《我的星辰》是陈可之先生“心宇宙”系…

React 项目结构小结

React 项目结构小结 简单的记录一下目前 React 项目用的依赖和实现 摸索了大半年了大概构建一套用起来还算轻松的体系……&#xff1f;基本上应该是说可以应对大部分的项目了 使用的依赖 目前项目还在 refactoring 的阶段&#xff0c;所以乱得很&#xff0c;这里是新建一个…

如何理解API?API 是如何工作的呢?

大家可能最近经常听到 API 这个概念&#xff0c;那什么是API&#xff0c;它又有什么特点和好处呢&#xff1f; wiki 百科镇楼 APIs are] a set of subroutine definitions, protocols, and tools for building application software. In general terms, it’s a set of clear…

ZKP10.2 Efficient Recursion via Statement Folding (Nova)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 10: Recursive SNARKs, Aggregation and Accumulation (Dan Boneh) 10.3 Efficient Recursion via Statement Folding: Nova, Supernova, and generalizations The difficulty with full recursion Prover P needs to build a…

严重的软件漏洞,你都知道和修复了吗?

有一些漏洞,影响深远而且影响重大。以下的严重软件漏洞,你都知道和修复了吗? 1. Log4Shell Log4Shell软件漏洞存在于Apache Log4j中,这种流行的Java日志框架被全球数千万人使用。 2021年11月,阿里云安全团队成员陈兆军发现了一个严重的代码漏洞。陈兆军最先注意到了Mi…