JSP学习——EL表达式和JSTL学习小结
目录
- 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学习小结相关推荐
- El 表达式、jstl学习
El 表达式学习 1. 什么是 EL 表达式 全称:Expression Language,一种写法非常简介的表达式.语法简单易懂,便于使用.表达式语言的灵感来自于 ECMAScript 和XPath ...
- 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.. ...
- JavaWeb EL表达式, JSTL标签及过滤器综合学习
1.项目结构如右边图所示: (1)controller.filter包下面定义2个过滤器,EncodingFilter 类CheckUserFilter类(后面会有一个登陆验证的过滤器的测试学习), ...
- spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...
- jsp脚本、jsp标准动作、EL表达式、JSTL标签
https://blog.csdn.net/gx_hxl/article/details/79032331 https://blog.csdn.net/a731604348/article/detai ...
- EL表达式 | 深入学习EL表达式
目录 一:深入学习EL表达式 1.什么是EL表达式 2.EL表达式的主要作用 3.EL表达式的使用 4.面试题 :${abc} 和 ${"abc"}的区别 5.EL表达式读取数据的 ...
- jsp(3,6,9) EL表达式及JSTL
1. jsp 1.1jsp是什么 全称: Java Server Pages,java服务器页面.和Servlet一样,是sun公司定义的一种动态网页开发技术. 特点:基于html模版,可以在 ...
- 大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL
JSP标签.EL表达式.JSTL (一)JSP标签技术 一.JSP标签技术概述 jsp本质上是一种动态web资源开发技术 , 看起来像是html , 但其中可以写java代码 , 非常方便用来开发动态 ...
- Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。
最终环境配置: IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据. +(servlet+jsp+el表达式jstl):ser ...
- EL表达式和JSTL标签:简化JSP的Java代码
JSP页面接收.展示后端的数据,再JSP页面写很多的Java代码会造成书写麻烦.难以阅读.不利于团队协作的缺点,因此我们使用EL表达式和JSTL标签,代替并简化了JSP页面 EL表达式 语法:${st ...
最新文章
- 21天mysql_把整个Mysql拆分成21天,轻松掌握,搞定(下)
- 【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )
- DataTable某一列的值转化成集合
- 研究性论文的图注应该怎么写?
- recv 和 send 阻塞和非阻塞的区别
- bch怎么挖_BCH是什么?
- chrome插件网站
- [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)
- php 判断用户是否刷新,ajax php 实现无刷新用户检查是否存在
- c#获取机器唯一识别码
- 电子相册系统(四)用户登录
- CEGUI中文显示四步曲
- 旧手机改造成Linux服务器
- CTEX加中英文摘要
- 横向浅析Small,RePlugin两个插件化框架
- 三级联动的数据库(贼多)
- 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
- 教你一招,如何用技术实现时序羽毛球动作预测
- Nexus3搭建jenkins报错 下载 依赖jar包 报错Not authorized
- 初中八年级计算机课程计划,初中信息技术教学计划