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

参数值进行编码

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

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

相关文章

面试常考:从lc24《两两交换链表中的节点》 到 lc25《K 个一组翻转链表》带你认识链表递归

1 lc24《两两交换链表中的节点》 1.1 描述 1.2 题解 1.2.1 递归解法 下面的三行注释要理解透彻&#xff0c; public ListNode swapPairs(ListNode head) {if(headnull||head.nextnull)return head;// 具体的两两交换过程ListNode nexthead.next; ListNode nextNexthead.next…

Apache ECharts简介和相关操作

文章目录 一、Apache ECharts介绍二、快速入门1.下载echarts.js文件2.新建index.html文件3.准备一个DOM容器用于显示图表4.完整代码展示5.相关配置 三、演示效果四、总结 一、Apache ECharts介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观…

Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据

一、Bundle给我们提供了一个putParcelable(key,value)的方法。专门用于传递实例化对象。 二、我这里传递Bitmap 图片数据&#xff0c;实际使用可以成功传统图像数据。 发送&#xff1a;Bundle bundle new Bundle();bundle.putParcelable("bitmap",bitmap);msg.setD…

Python库Requests的爬虫程序爬取视频通用模版

目录 一、引言 二、Requests库介绍 三、通用视频爬虫模板设计 1、确定目标网站和视频页面结构 2、发送HTTP请求获取页面内容 3、解析HTML内容提取视频链接 4、下载视频文件 四、模板应用与实践 五、注意事项 总结与展望 一、引言 随着互联网的发展&#xff0c;视频内…

系列四、全局配置文件mybatis-config.xml

一、全局配置文件中的属性 mybatis全局配置中的文件非常多&#xff0c;主要有如下几个&#xff1a; properties&#xff08;属性&#xff09;settings&#xff08;全局配置参数&#xff09;typeAliases&#xff08;类型别名&#xff09;typeHandlers&#xff08;类型处理器&am…

全球高分辨率地表太阳辐射数据集包含36年(1983.7-2018.12)

简介&#xff1a; 全球高分辨率地表太阳辐射数据集包含36年&#xff08;1983.7-2018.12&#xff09;的全球地表太阳辐射数据&#xff0c;其分辨率为3小时&#xff0c;10公里&#xff0c;数据单位为W/㎡&#xff0c;瞬时值。该数据集可用于水文建模、地表建模和工程应用&#x…

车载电子电器架构 —— 基于AP定义车载HPC

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

kafka动态认证 自定义认证 安全认证-亲测成功

kafka动态认证 自定义认证 安全认证-亲测成功 背景 Kafka默认是没有安全机制的&#xff0c;一直在裸奔。用户认证功能&#xff0c;是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的&#xff08;或者说只有SSL&#xff09;&#xff0c;好在kafka0.9版本…

OpenGL_Learn04

我这边并不是教程&#xff0c;只是学习记录&#xff0c;方便后面回顾&#xff0c;代码均是100%可以运行成功的。 1. 渐变三角形 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <cmath>void framebuffer_size_callba…

tp6使用Spreadsheet报错:Class ‘PhpOffice\PhpSpreadsheet\Spreadsheet‘ not found

问题提示如下&#xff1a; 可能vendor下的 phpoffice是从别的项目拷贝过来的&#xff0c;所以咋都不行 解决办法是删掉vendor下的phpoffice&#xff0c;用composer重新下载 具体操作&#xff1a;1、在项目根目录下cmd执行下面这条命令 composer require phpoffice/phpspread…

《Webpack 5 基础配置》- 禁止在出现编译错误或警告时,覆盖浏览器全屏显示

Webpack5 overlay 配置地址默认编译错误或警告为 true&#xff0c;即浏览器全屏显示&#xff1b;overlay 属性可以是 boolean 型&#xff0c;也可是 object 类型&#xff1b;还有其它设置说明&#xff0c;详见上述官网地址&#xff1b; module.exports {devServer: {client: {…

XR Interaction ToolKit

一、简介 XR Interaction Toolkit是unity官方的XR交互工具包。 官方XRI示例地址&#xff1a;https://github.com/Unity-Technologies/XR-Interaction-Toolkit-Examples 2023.3.14官方博客&#xff0c;XRIT v2.3 https://blog.unity.com/engine-platform/whats-new-in-xr-int…

企业内部外网向内网传输文件如何实现高效安全?

随着信息技术的发展&#xff0c;企业内部外网隔离已成为一种常见的网络安全措施&#xff0c;旨在防止外部攻击者入侵内部网络&#xff0c;保护企业的核心数据和业务系统。然而&#xff0c;企业内外网隔离也带来了一些问题&#xff0c;其中之一就是如何实现内外网之间的文件传输…

C++二分查找算法的应用:俄罗斯套娃信封问题

本文涉及的基础知识点 二分查找 题目 给你一个二维整数数组 envelopes &#xff0c;其中 envelopes[i] [wi, hi] &#xff0c;表示第 i 个信封的宽度和高度。 当另一个信封的宽度和高度都比这个信封大的时候&#xff0c;这个信封就可以放进另一个信封里&#xff0c;如同俄罗…

2023年是5G-A标准制定关键年 华为实现5G-A重大突破

5G商用四年&#xff0c;2023年5G应用项目已经达到10万个&#xff0c;5G向千行百业渗透的同时&#xff0c;也在向5G-Advanced&#xff08;下简称5G-A&#xff09;演进。 10月20日&#xff0c;在工业和信息化部主办的2023年中国5G发展大会上&#xff0c;由IMT-2020&#xff08;5G…

【chatglm3】(2)使用docker运行chatglm3对外的http服务,使用python代码执行函数调用,查询北京天气

函数调用的演示视频&#xff1a; 使用docker运行最新chatglm3-6b&#xff0c;对外的http服务&#xff0c;使用python代码执行函数调用&#xff0c;查询北京天气代码演示和说明 使用docker运行最新chatglm3-6b&#xff0c;对外的http服务&#xff0c;使用python代码执行函数调用…

unraid 安装并设置 zerotier 内网穿透安装 unraid 局域网内其他设备

Read Original 最近看了以下两个文章&#xff0c;感谢发布的各种精彩文章&#xff0c;让我受益匪浅。OPENWRT 的固件在设置了&#xff0c;【自动允许客户端 NAT】后&#xff0c;可以直接访问局域网其他设备&#xff0c;而我 unraid 部署 zerotier 后&#xff0c;只能访问 unra…

R语言在生态环境领域中的实践技术应用

R语言作为新兴的统计软件&#xff0c;以开源、自由、免费等特点风靡全球。生态环境领域研究内容广泛&#xff0c;数据常多样而复杂。利用R语言进行多元统计分析&#xff0c;从复杂的现象中发现规律、探索机制正是R的优势。为此&#xff0c;以鱼类、昆虫、水文、地形等多样化的生…

java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

文章目录 数据结构总结ArrayList源码底层LinkedList底层源码 迭代器底层 数据结构 对于数据结构我这边只告诉你右边框框里的 栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈 栈就像一个弹夹 队列先进先出后进后出 队列像排队 链表查询满 但是增删快(相对于数组而…

你没有见过的 git log 风格

背景 git大家都不陌生&#xff0c;git log 也是大家经常用的指令&#xff0c;今天分享三种 git log的美化格式&#xff0c;大家看看哪种更易读。 git log -15 --graph --decorate --oneline 带有 pretty 格式的git log 风格 log --color --graph --prettyformat:‘%Cred%h%C…