我的学习之路_第三十五章_EL&JSTL

回顾:JSP:JavaServerPage=servlet
三种脚本:
<% %>
<%= %>
<%! %>
三种注释:
<%-- --%>
<% // /**/ %>
<!-- -->
三个编译指令:
<%@ page %>
contentType
pageEncoding
import
errorPage
isErrorPage
<%@ include %>
file
<%@ taglib %>
七个动作指令:
<jsp:include page=" "/>
<jsp: forward>
<jsp: taglin>
九个内置对象:
page object
request
session
applocation
response
config
out jspWriter(printWriter)
pageContext pageContext
取得其他内置对象
操作所有四个域
exception

JSP模式:EL&JSTL

软件的结构:MVC
M:Model:模型 模式
V:View:视图
C:Controller:控制器

EL : Expression Language 表达式语言
作用:计算表达式的值并替换到页面的当前位置。替代的<%= %>
语法:${表达式}
注意:
EL只能在JSP中用,(HTML不能用)
EL只能访问域中的数据,不能访问页面中的局部变量
如果EL表达式在当前页面中不能生效(直接把表达式显示出来,没有进行计算),在page指令中设置isElgnored="false"

内置对象:(EL的内置对象,和JSP的内置对象不是一回事)
域对象:注意此四个内置对象代表的是四个域,并不代表四个JSP内置对象
pageScope
requestScope
sessionScope
applicationScope
注意:在使用EL表达式的这四个域对象指定取得数据的域范围时,如果指定了,则只在指定的
域中查询找数据,如果没找到,则返回空(不是null,就是空字符串),如果没有指定域,直接在EL表达式
中给出变量名,则由小到大在四个域中进行查询,找到为止.
请求参数对象:
请求头对象
Cookie对象
上下文对象
初始化参数对象

JSTL : JSP Standard Target Lib : JSP标准标签库
是一些由Java语言实现的标签,可以在JSP页面中使用的标签.
所以这种标签是内服务器运行的,浏览器并不能识别这些标签.
JSTL是JSP官方开发的一些标签.(任何人都可以开发标签库)

如何使用JSTL:
导包(JSTL.jar standard.jar)
在页面中声明引用标签库:
<%@ taglib uri=" " prefix=" " %>

uri:当前引入标签库的唯一标识(开发标签库的开发者自定义的)
prefix:使用当前标签库的标签时,使用的前缀.自定义(只在当前页面有效)

总结:

EL:表达式语言
${表达式}
注意:表达式中的数据除常量必须来自于域
内置对象:
pageScope
requestScope
sessionScope
applocationScope
param/paramValues
pageContext: pageContext.request.contextPath 取得项目名
header/headerValues
initParam
cookie
empty:
数值:是否为0
字符串:是否为空“”
对象:是否为null
集合:否为长度为0

JSTL:
使用方式:
导包:jstl.jar standard.jar
在页面中引用标签库: <%@ taglib uri=" " prefix=" " %>

uri:开发标签库中开发者自定义
prefix:当前页面自定义的(每个页面都可以不一样)
使用自定义的前缀引用标签: <c:if > </c:if>

if
属性:test : 属性值的一个结果为布尔值的表达式,根据此表达式的结果决定是否运行if标签的内容
没有else,想要实现else只能是在if标签的后面跟一个反条件的if
forEach
List:<c:forEach var="p" items=" ${list} " >
Map:<c:forEach var = "m" items=" ${map} ">
var所定义的m是一个键值对,可以通过m.key/m.value 得到键和值

计数型循环:
var 循环控制变量
begin 起始值(闭区间)
end 结束值(闭区间)
step 步长

varStatus 属性 : 代表的是当前本次循环的状态
index:从0开始
count:从1开始
first : 是否是第一个
last:是否是最后一个

--------------------------------------------------------------------------------------------------------------
EL不能直接访问局部变量,只有被保存在域中,才能被EL表达式访问到
在${}前面加反斜杠,代表转义,此EL表达式就不再进行运算了,而是原样显示
--------------------------------------------------------------------------------------------------------------
<%--包含特殊字符的名字,用方括号和引号括起来 --%>
例如: \${header[‘User-Agent‘] } : ${header[‘User-Agent‘] }
--------------------------------------------------------------------------------------------------------------
${pageContext.request.contextPath } 获取当前项目名
--------------------------------------------------------------------------------------------------------------
<%--判断对象时,对象为空,则返回true --%>
<%--判断集合对象时,对象为空,返回true,对象不为空,但集合中没有元素,返回true --%>
\${ empty list } : ${ empty list }<br/>
--------------------------------------------------------------------------------------------------------------

<%--JSTL中的if标签,运算test属性中的表达式,如果结果为true,则运算if标签中的内容,否则不运行
JSTL没有提供ELSE,所以想要实现if else 的结构,之恩能在if标签后面再跟上一个if标签
在test属性中设置完全相反的条件
--%>
例题:<c:if test="${3>2 }">
<font>条件成立</font>
</c:if>
--------------------------------------------------------------------------------------------------------------
<%--
实现计数型循环:
for( int i = 0 ; i < 10 ; i++ )
begin:起始值
end:结束值 闭区间
step:步长(默认为1)
--%>
<c:forEach var="i" begin="1" end="10" step="1" >
${i }<br/>
</c:forEach>
--------------------------------------------------------------------------------------------------------------
<%--varStatus是一个可选属性,设置代表当前循环状态的一个对象
对象属性:
index:整数,当前循环的索引,从零开始
count:整数,当前循环的次数,从一开始
first:布尔值,当前循环是否是第一次
last:布尔值,当前循环是否是最后一次
--%>
--------------------------------------------------------------------------------------------------------------
<c:forEach > </c:forEach>标签中 (var 表示:变量名 items 表示要遍历的元素)增强for
{begin:起始值 end:结束值 step:步长(默认为1)} 普通for
--------------------------------------------------------------------------------------------------------------

时间: 2024-12-21 16:08:14

我的学习之路_第三十五章_EL&JSTL的相关文章

我的学习之路_第三十二章_HttpServletRequest

HttpServletRequest 取得请求行的信息: 返回值 : String getMethod() 请求方式 返回值 : String getRequestURI()请求目标 返回值 : String getProtocol() 使用协议 取得请求头的信息: 返回值 : String getHeader(String name) 传一个请求头的key值,返回一个请求头的value值 返回值 : String getHeaderNames(String name) 取得所有请求头的名字,封

【WPF学习】第三十五章 资源字典

原文:[WPF学习]第三十五章 资源字典 如果希望在多个项目之间共享资源,可创建资源字典.资源字典只是XAML文档,除了存储希望使用的资源外,不做其他任何事情. 一.创建资源字典 下面是一个资源字典示例,它包含一个资源: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/wi

“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第三十五章:如何获取线程被等待的时间? 下一章 "全栈2019"Java多线程第三十六章:如何设置线程的等待截止时间 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&qu

Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

我的学习之路_第三章_匿名内部类

final: final是最终修饰符,可以修饰类.成员方法.变量. final修饰的类无法被继承. final修饰的方法无法被重写. final修饰的变量无法被再次赋值,变为了常量. final修饰的引用数据类型变量,可以修改对象里面的属性内容,不可改变地址值 final修饰的成员变量,不能使用默认值,没有意义,必须在创建对象之前完成赋值. static: 静态修饰符,被static修饰的内容属于类不专属于某个对象,多个对象共享使用这一个成员 使用static修饰的成员可以用类名直接访问,建议这

奋斗吧,程序员——第三十五章 莫愁前路无知己,天下谁人不识君

又是一年情人节,繁华和歌舞升平如故,诺言和鲜花令女孩们迷醉如故. 今年经历了太多的离别,很多朋友离开或者说我离开. 我知道我们不会再象以前的圣诞节一样在一起,听教堂的钟声或者看狂欢的人群. 彼此的生活是正切曲线的函数图像,在第一和第三象限画出轨迹背道而驰的弧. 她让我们渐行渐远. 路灯在雨后的路面上晕开拉长的光线,让人昏昏欲睡.灯火辉煌的街头人流如织一如往年的繁盛,我不知道当喧嚣散尽之时,树叶落下会有怎样寂寞的声响. 我透过车窗看到路边踢铝制易拉罐的男孩们,每次见到这样的孩子我总是很欣慰,他们中

第三十五章——过滤器和监听器

过滤器代码示例: package com.hanqi.maya.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import j

黑马程序员 【】java学习之路——TCP(三)客户端上传文件到服务器

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- import java.io.*; import java.net.*; class

Android 学习之路--android基础(三)

Android 学习之路--android基础(三) | Talent?C 盒子 盒子 博客 友链 关于 Posts List 作者Talent?C转载请注明出处 前言 上一篇文章我们介绍了 活动(Activity) 的作用及相关用法,我们知道活动是用来给用户展示 UI界面 的,那么在Android中都有哪些UI控件呢?今天就让我们来简单学习几种常见的 UI控件. 如何编写UI界面? Android Studio中为我们提供两种UI界面的编辑方式, 第一种是通过Android Studio 提供