EL表达式和JSTL标签库(带编码)

一、EL表达式(Expression language)

1.EL表达式的语法:

${表达式},例如: ${list}

注意:

自带响应功能

2.EL表达式的使用:

1.EL表达式获取请求数据

获取用户请求数据(请求实体)

${param.键名} 获取请求实体中一个键一个值的数据

${paramValues.键名} 获取请求实体中同键不同值的数据,返回的是String数组,可以使用角标直接获取

2.获取请求头数据

${header} 返回所有请求的数据,键值对形式

${header["键名"]} 返回指定的键的请求数据

${headerValues["键名"]}

3.获取Cookie数据

${Cookie} 获取所有的Cookie键值对 对象

${Cookie.Cookie对象的键名} 获取存储了指定Cookie数据的Cookie对象

${Cookie.Cookie对象的键名.name} 获取存储了指定Cookie数据的Cookie对象的存储的键

${Cookie.Cookie对象的键名.value} 获取存储了指定Cookie数据的Cookie对象的存储的值

3.EL表达式获取作用域数据

1.作用域对象: pageContext request session application

2.作用域数据:我们使用setAttribute方法存储的数据

3.获取:

普通的字符串数据:${键名}

对象数据:${键名.属性名}

EL表达式获取作用域对象数据

<br />

<%

User user = new User();

user.setUid(1);

user.setUname("zhangsan");

user.setAge(1);

user.setFav("看电影");

request.setAttribute("user", user);

  %>

${user }<br />${user.uid}<br /> ${user.uname}<br />

获取对象属性的值${对象名.属性名 },本质调用了该属性的getter方法

集合数据:

list集合${键名[角标]}

<%

List list = new ArrayList();

list.add("list1");

list.add("list2");

request.setAttribute("list", list);

%>

${list}<br />

${list[0]}

list集合${键名[角标]}

Map集合${map集合作用域存储的键名.map集合存储的数据的键名}

4.作用域查找顺序,

pageContext

request

session

application

如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个都没有找到则什么都不表示

5.指定作用域的获取

${pageScope.键名} 指定了获取pageContext作用域中的数据

${requestScope.键名} 指定了获取requestContext作用域中的数据

${sessionScope.键名} 指定了获取sessionContext作用域中的数据

${applicationScope.键名} 指定了获取applicationContext作用域中的数据

                <%

  pageContext.setAttribute("str", "hello,pageContext");

  request.setAttribute("str", "hello,requestContext");

  session.setAttribute("str", "hello,sessionContext");

  application.setAttribute("str", "hello,applicationContext");

  %>

  ${str}<br/>

  从pageContext中取值:${pageScope.str};<br/>

  从requestContext中取值:${requestScope.str};<br/>

  从sessionContext中取值:${sessionScope.str};<br/>

  从applicationContext中取值:${applicationScope.str};<br/>>

4.EL表达式逻辑运算

1.算术运算:

+,-,*,/在EL表达式中可以直接进行算术运算

${算术表达式} 例如:${1+2}

注意:+表示算术运算,不能进行字符串连接

2.逻辑运算:&& ! ||

${逻辑表达式}

3.比较运算:== != > >= < <=

${比较表达式}

4.三目运算

${条件?值:值}

5.EL表达式的empty判断

${empty 键名}

作用:

判断该键是否有存储有效数据

二、JSTL标签库

1、JSTL学习

作用:

在jsp页面使用其可以非常方便的进行数据的处理。较与使用java代码块方法,更加简单,代码更加的简洁易读。

使用:

核心标签库

流程:

导入jar包

引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

内容:

基本标签

out标签:

<c:out value="${表达式}" default="默认值"></c:out>

作用:结合EL表达式将数据响应给浏览器 ,如果EL表达式没有收到数据则可以使用dafault属性声明默认值。

set标签:

<c:set value ="数据" var="键名" scope="作用域名"></c:set>

<%

int age=10;

request.setAttribute("age", age);

%>

等同于

<c:set value="10" var="gae" scope="request"></c:set>

作用:将数据存储到指定的作用域中,默认是pageContext作用域

注意:scope的值为 pag request session application

remove标签:

        <c:remove var="要删除的键名" scope="作用域名"></c:remove>

作用:删除作用域中的数据,默认是删除四个作用域中符合要求的数据

注意:使用pageContext.removeAttriute("键名"), 此方法会将四个作用域中的符合要求的数据全部删除

使用pageContext.removeAttriute(String name,int scope)

指明要删除的作用域中的数据 scope的值为 1pageContext,2request ,3 session,4 application

使用request.removeAttibute("键名") 删除当前作用域符合要求的数据

使用session.removeAttibute("键名") 删除当前作用域符合要求的数据

使用application.removeAttibute("键名") 删除当前作用域符合要求的数据

逻辑标签:

单分支判断标签:<c:if test="${表达式}"数据></c:if>

作用:可以根据EL表达式进行一定程度的单分支逻辑判断式。

注意:test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。

该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理

  <c:set var="a" value="12"></c:set>

  <c:if test="${a>8}">

  <b>今天天气真好,适合学习2</b>

  </c:if>

该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理

多分支判断标签:

  <c:choose>

    <c:when test="${表达式}"></c:when>

    <c:when test="${表达式}"></c:when>

    ..

    <c:otherwise></c:otherwise>

  </c:choose>

实例:

<c:set value="80" var="score" scope="request"></c:set>

<c:choose>

<c:when test="${score>=90}">优秀</c:when>

<c:when test="${score>=80 }">良好</c:when>

<c:when test="${score>=70 }">一般</c:when>

<c:when test="${score>=60 }">及格</c:when>

<c:when test="${score<80 }">不及格</c:when>

</c:choose> 

注意:符合条件后只会执行一个分支,其他分支不会执行。

循环标签:

  <c:foreach>

    循环体

  </c:foreach>

实例:

<%

List<Employee> li = new ArrayList<Employee>();

li.add(new Employee(1001,"高琪",18,"程序员","30000","5000"));

li.add(new Employee(1002,"高小二",19,"讲师","25000","3000"));

li.add(new Employee(1003,"高小松",20,"教授","30000","3000"));

request.setAttribute("li", li);

%>

<c:forEach  items="${li }" var="li" begin="0" end="1">

${li }<br/>

</c:forEach>

属性:

begin:声明循环的开始位置

end:声明循环的结束位置

step:声明循环的步长

varStatus:声明变量记录循环状态 ,例如变量名:i

注意:记录的数据存储到了作用域中可以直接使用El表达式进行获取

示例: ${i.index} 获取当次循环的下标

${i.count} 获取当次循环的次数

${i.first} 判断是否是第一次循环

${i.last} 判断是否是最后一次循环

items:声明要遍历的数据,可以是集合和数组等

注意:要使用EL表达式来获取

var:声明变量记录每次遍历的结果。可以做循环体中使用EL表达式获取遍历出来的数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容