目录

  • EL表达式
  • JSTL
    • 1. 介绍
    • 2. 配置
    • 3. 标签使用

EL表达式

一、EL与JSTL作用:

简化JSP文件上java代码开发步骤。

二、jsp主要的开发任务

将域对象中的数据读取并写入响应体中。

三、在jsp中使用java命令,将域对象中的数据读取并写入到响应体(客户端)

域对象读取的数据都是object类型 需要进行数据转换
eg:<%String value = (String)request.getAttribute("key");//out.write(value);%><%=value%>

五、EL的标准格式:

${域对象别名.关键字},他会到指定域对象读取对应关键字内容,并自动将内容写入到响应体中

六、JSP文件中域对象

1.application:  全局作用域对象
2.session:      会话作用域对象
3.request:      请求作用域对象
4.pageContext:  当前页作用域对象(很少使用)

七、EL表达式中域对象的别名

    JSP             EL
application     applicationScope
session         sessionScope
request         requestScope
pageContext     pageScope

八、EL表达式 将 高级对象属性写入到响应体中

${域对象.关键字.属性}
EL表达式使用反射机制,通过调节当前属性对应的get方法 读取属性内容
所以直接.属性即可 不用.get属性()

九、EL表达式简化版

可以省略域对象别名
${关键字}
原理:你没有给他作用域对象,人家就猜白从 小作用域到 大作用域 去定位关键字,如果有就读取并输出并结束执行即pageContext-->request-->session-->application缺点:1.增加运行时间。2.导致定位错误 即 获取信息错误例如你在session和pageContext中同时设置相同关键字,你通过${关键字}获取的是pageContext中的值而不是session中的
【适用场景】:专门为pageContext读取数据并写入响应体作准备

十、EL表达式所支持的运算

1.数学运算注:EL表达式会根据key获取的value的类型自动进行数据类型转换<%String key1 = (String) pageContext.getAttribute("key1");String key2 = (String) pageContext.getAttribute("key2");%>EL表达式:${key1+key2}  ------ 3
2.关系运算正常运算符     >   >=  <   <=  ==  !=EL中的别名     gt  ge  lt  le  eq  !=EL表达式不支持java中的if else   可以使用三元运算符 判断语句 ? 结果1 : 结果2 ;${age ge 18 ?"欢迎光临" : "未满18,禁止入内!"}3.逻辑运算

十一、 EL表达式 其他内置对象

1.param:【作用】:读取请求协议包(request)中参数内容【格式】:${param.请求参数名}【相当于】:String value = (String) request.getParameter("请求参数名")out.write(value);2.paramValues:【作用】:读取请求协议包(request)中关联的多个请求参数,将参数内容保存到数组中【格式】:${paramValues.请求参数名}【相当于】:String array[] = request.getParameterValues("请求参数名")(该请求参数中含有多个值)注:因为单独EL表达式中没有循环,所以每个信息对应值的下标需要自己写 返回的数组[下标]所以需要结合jstl去循环3.initParam:(基本用不到)【作用】:【格式】:${initParam.共享数据名}【相当于】:String value = application.getInitParameter("driver");out.write(value);eg:web.xml文件中<context-param><param-name>driver</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param>JSP文件中来自web.xml中的共享数据:${initParam.driver}前端页面来自web.xml中的共享数据:com.mysql.jdbc.Driver4.

十二、相对路径和绝对路径

1.相对路径与绝对路径区别:1、相对路径:以当前文件位置为起点,定位其他的资源文件2、绝对路径:以当前网站的根目录,定位其他资源文件“./”:代表目前所在的目录。“../”:代表上一层目录。以”/”开头:代表根目录。

十三、EL表达式的缺陷

1.只能读取域对象数据,不能向域对象中写入数据 或 更改数据
2.不支持控制语句 什么if判断 while循环 单独EL表达式都不能做到所以如果单独使用EL表达式,无法确保JSP文件中所有的java命令都被替换

JSTL

1. 介绍

JSTL(JavaServerPages Standard Tag Library)JSP标准标签库1.为什么要用JSTL:可以编写没有java代码的jsp页面。使JSP页面很容易被WEB设计人员理解,表达更清晰。减少程序出错,使程序容易维护。2.JSTL标准标签库:核心标签库:java在jsp上基本功能进行封装,如if,while;常用的是if和forEachsql标签库;JDBC在jsp中使用功能(不重要)xml标签;DOM4J在jsp上使用(不重要)Format标签:JSP文件格式转换(不重要)3.说白了,JSTL常实现网页逻辑判断和迭代显示的,4.需要引入<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>《掩耳盗铃|披着羊皮的狼 ,本质还是java命令,只不过看着像HTML标签》

2. 配置

1.导入依赖jar:<!-- https://mvnrepository.com/artifact/jstl/jstl --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
2.在JSP文件中引入JSTL中core包依赖约束(固定格式,直接复制粘贴)<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>uti---prefix---前缀名

3. 标签使用

1.<c:set>:[作用]:在jsp文件上设置域对象中共享数据[使用]:<c:set scope="session",var="key",value="10"/>[属性]:scope:  指定操作的域对象的别名scope="application/session/request/page"var:    声明域对象关键字value:  想要存入的共享数据[相当于]:<%session.setAttribute("key","10");%>
2.<c:if>[作用]:在jsp文件中控制那些内容可以写入到响应体中 就是java的if[使用]:<c:if test="EL表达式写的判断">内容</c:if>
注;经常会在jstl中嵌入EL表达式eg:<c:set scope="request" var="age" value="20"/><c:set scope="request" var="age" value="${requestScope.age+1}"/>系统会先执行EL表达式再执行jstl
3.<c:choose>[作用]:在jsp文件中实现多分支选择判断,决定哪部分内容可以写入响应体中。就是java中的else if[使用]:<c:choose><c:when test="EL表达式写的判断1">内容1 对应if </c:when><c:when test="EL表达式写的判断2">内容2 对应if</c:when><c:otherwise> 内容3 对应else</c:otherwise></c:choose>
4.<c:forEach>[作用]:循环遍历[用法1]:<c:forEach var="声明循环变量名称" begin="初始化循环变量" end="循环变量可以接收到的最大值" step="循环变量递增或递减值"> </c:forEach>step属性可以不写 默认递增1循环变量会自动放到当前页面作用域(pageContext)中eg:<c:forEach var="i"  begin="1" end="5" step="1"><option value="">第${i}页</option></c:forEach>相当于java中的 for(int i = 1; i <= 5 ; i++){}[用法2]:<c:forEach item="通过EL表达式获取域对象中的集合 如" var="声明一个循环变量"> </c:forEach>eg1:<c:forEach items="${studentSet}" var="student">学生编号:${student.sid}学生姓名:${student.name}</c:forEach>相当于java中的 for(Student student:StudentSet){}用于遍历集合Set/Listeg2:<c:forEach items="${studentMap}" var="key-value"><tr><td>${key-value.key}</td><td>${key-value.value.sid}</td><td>${key-value.value.name}</td></tr></c:forEach>遍历Map集合的时候每次获得的var 是一个键值对通过  循环遍历.key    循环遍历.value 获取对应的键值

JSP学习——EL表达式和JSTL学习小结相关推荐

  1. El 表达式、jstl学习

    El 表达式学习 1. 什么是 EL 表达式 全称:Expression Language,一种写法非常简介的表达式.语法简单易懂,便于使用.表达式语言的灵感来自于 ECMAScript 和XPath ...

  2. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法 一.条件运算符 ${user.gender==?'男':'女'} 二.if() code.. ...

  3. JavaWeb EL表达式, JSTL标签及过滤器综合学习

    1.项目结构如右边图所示: (1)controller.filter包下面定义2个过滤器,EncodingFilter 类CheckUserFilter类(后面会有一个登陆验证的过滤器的测试学习), ...

  4. spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)

    EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...

  5. jsp脚本、jsp标准动作、EL表达式、JSTL标签

    https://blog.csdn.net/gx_hxl/article/details/79032331 https://blog.csdn.net/a731604348/article/detai ...

  6. EL表达式 | 深入学习EL表达式

    目录 一:深入学习EL表达式 1.什么是EL表达式 2.EL表达式的主要作用 3.EL表达式的使用 4.面试题 :${abc} 和 ${"abc"}的区别 5.EL表达式读取数据的 ...

  7. jsp(3,6,9) EL表达式及JSTL

    1. jsp 1.1jsp是什么 全称: Java Server Pages,java服务器页面.和Servlet一样,是sun公司定义的一种动态网页开发技术.     特点:基于html模版,可以在 ...

  8. 大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL

    JSP标签.EL表达式.JSTL (一)JSP标签技术 一.JSP标签技术概述 jsp本质上是一种动态web资源开发技术 , 看起来像是html , 但其中可以写java代码 , 非常方便用来开发动态 ...

  9. Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。

    最终环境配置: IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据. +(servlet+jsp+el表达式jstl):ser ...

  10. EL表达式和JSTL标签:简化JSP的Java代码

    JSP页面接收.展示后端的数据,再JSP页面写很多的Java代码会造成书写麻烦.难以阅读.不利于团队协作的缺点,因此我们使用EL表达式和JSTL标签,代替并简化了JSP页面 EL表达式 语法:${st ...

最新文章

  1. 21天mysql_把整个Mysql拆分成21天,轻松掌握,搞定(下)
  2. 【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )
  3. DataTable某一列的值转化成集合
  4. 研究性论文的图注应该怎么写?
  5. recv 和 send 阻塞和非阻塞的区别
  6. bch怎么挖_BCH是什么?
  7. chrome插件网站
  8. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)
  9. php 判断用户是否刷新,ajax php 实现无刷新用户检查是否存在
  10. c#获取机器唯一识别码
  11. 电子相册系统(四)用户登录
  12. CEGUI中文显示四步曲
  13. 旧手机改造成Linux服务器
  14. CTEX加中英文摘要
  15. 横向浅析Small,RePlugin两个插件化框架
  16. 三级联动的数据库(贼多)
  17. 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
  18. 教你一招,如何用技术实现时序羽毛球动作预测
  19. Nexus3搭建jenkins报错 下载 依赖jar包 报错Not authorized
  20. 初中八年级计算机课程计划,初中信息技术教学计划

热门文章

  1. vba 数组填充单元格
  2. 快速排序时间复杂度分析
  3. RGB网页颜色在线取色器
  4. 互联网日报 | 蚂蚁集团成立整改工作组;万达完成开业45座万达广场年度目标;T3出行日订单突破100万...
  5. Java常见设计模式面试题及答案
  6. KNX转485模块的开发
  7. linux mint 中文字体,Linux Mint字体设置
  8. Qt编写Modbus从机程序
  9. qq透明图像问题#13
  10. (2)海思烧写工具Hitool工具使用