el、jstl

EL(Expression Language)EL表达式

作用:在JSP中消灭java代码

语法: "${  }"

用法:

加判断,避免空指针异常

<%

User user = (User)session.getAttribute("user");

if(user != null){

out.write("尚学堂教育系统,欢迎"+user.getRealname()+"光临本站!");

}else{

out.write("尚学堂教育系统,欢迎光临本站!");

}

%> --%>

<%-- 可能会报500异常:

尚学堂教育系统,欢迎<%= ((User)session.getAttribute("user")).getRealname() %>光临本站! --%>

<%-- 更为简单,稳妥的方式! --%>

<%

int a = 10;

//数据在四大作用域对象中

pageContext.setAttribute("a", a);

request.setAttribute("aaa", true);

session.setAttribute("age", 18);

application.setAttribute("name", "laowang");

// 简单对象

User user = new User(1, "admin", "admin", "老王");

request.setAttribute("uuu", user);

// 复合对象

User u2 = new User(2, "admin-laowang", "123123", "老王", new Address(

"广东省", "广州市", "天河区"));

pageContext.setAttribute("u2", u2);

//List中的数据

List list = new ArrayList();

list.add("apple");

list.add("orange");

list.add("watermelon");

list.add("pineapple");

pageContext.setAttribute("fruits", list);

//Map中的数据

Map map = new HashMap();

map.put("name", "zhangsan");

map.put("age", 18);

map.put("gender", "女");

map.put("address", new Address("广东省", "广州市", "天河区"));

pageContext.setAttribute("person1", map);

//作用域中有相同的key

pageContext.setAttribute("xxx", "pageContext");

request.setAttribute("xxx", "request");

session.setAttribute("xxx", "session");

application.setAttribute("xxx", "application");

User uu1 = new User(5,"admin","admin","张三");

User uu2 = new User(5,"admin","admin","张三");

request.setAttribute("uu1", uu1);

request.setAttribute("uu2", uu2);

request.setAttribute("score", 99);

pageContext.setAttribute("a1", null);

pageContext.setAttribute("a2", new ArrayList());

pageContext.setAttribute("a3", new HashMap());

pageContext.setAttribute("a4", "");

%>

尚学堂教育系统,欢迎${user.realname}光临本站!

<h3>EL表达式从哪里取值?一般情况下,从作用域对象中取值</h3>

${a} --- ${aaa} --- ${age} --- ${name}

<h3>EL表达式可以取什么类型的值?基本数据类型、引用数据类型(对象、复合对象、List、Map)</h3>

${uuu.realname} --- ${u2.addr.town} --- ${fruits[2]} ---

${person1.address.city}

<h3>EL表达式从哪个作用域中取值?默认从最小作用域中开始寻找,找不到往大的作用域中找,都找不到显示为空</h3>

${xxx}

<h3>EL从指定作用域中取值?

pageScope、requestScope、sessionScope、applicationScope</h3>

${pageScope.xxx }--- ${requestScope.xxx} --- ${sessionScope.xxx } ---

${applicationScope.xxx }

<h3>EL表达式还可以取请求参数中的值:param、paramValues</h3>

${param.username} --- ${paramValues.fav[2] }

<h3>EL表达式除了“.”操作符之外,还有“[ ]”操作符:“[]”可以解析子EL表达式</h3>

${uuu["realname"]} --- ${param.type} --- ${uuu[param.type]}

<h3>EL表达式中的为空判断:empty判断为空的有:空字符串、null、空集合、空map</h3>

${empty a1} --- ${empty a2} --- ${empty a3} --- ${empty a4}

<h3>EL表达式可以进行一些基本的数学运算</h3>

${5+4} --- ${5-4} --- ${5*4} --- ${5/4} --- ${5%4} --- ${5+"4"}

<h3>EL表达式可以进行一些逻辑判断</h3>

${5>4} --- ${ 5 == 4} --- ${ 5 eq 4 } --- ${uu1 == uu2} --- ${uu1 eq uu2} --- ${score == 99 }


JSTL(JSP Standard Tag Library) JSP标准标签库

作用:在JSP中消灭java代码

使用:1.下载jar包,并导入

2.使用<%@ taglib %>引入标签库,设置uri和prefix的属性值(属性的值可以在jstl-impl-1.2.2.jar/META-INF/c.tld找到)

3.使用标签。

标签用法:

<h3>c:out标签:用于将作用域中的对象输出,default属性会在value属性为空时显示</h3>

<c:out value="${weather}" default="汗流浃背!"></c:out>

<h3>c:set标签:用于将一个数据保存在作用域中(默认最小作用中),通过scope设定存放的作用域</h3>

<c:set var="name" value="laowang" scope="request"></c:set>

${requestScope.name}

<c:set var="table">

<table border="1" style="border-collapse: collapse;">

<tr>

<td>1*1</td>

<td>1*2</td>

</tr>

<tr>

<td>2*1</td>

<td>2*2</td>

</tr>

</table>

</c:set>

${table}-${table}-${table}

<h3>c:remove标签:将作用域中的指定key的数据删除(默认删除所有作用域中的指定key的数据)</h3>

<c:remove var="aaa" scope="page" />

${aaa}

<h3>c:if标签:条件判断(单条件)</h3>

<c:if test="${score >= 80}" var="flag">

优秀!

</c:if>

<c:if test="${!flag}">

良好!

</c:if>

<h3>c:choose 、 c:when、 c:otherwise标签:条件判断(多条件)</h3>

<h4>注意以下几点:1.c:when必须在c:otherwise之前出现</h4>

<h4>2.c:otherwise只能出现一次</h4>

<h4>3.c:when和c:when和c:otherwise之前不允许出现其他任何字符</h4>

<c:choose>

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

优秀!

</c:when>

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

良好

</c:when>

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

及格

</c:when>

<c:otherwise>

不及格

</c:otherwise>

</c:choose>

<h3>c:forEach标签:循环</h3>

<h4>items:循环体,通过使用EL表达式获取循环的内容</h4>

<h4>begin & end:只能为数字,当没有items属性时,从begin数字循环到end数字;当有items属性时,begin & end就表示下标</h4>

<h4>step:步长</h4>

<h4>var:表示每次的循环体</h4>

<h4>varStatus:当前循环体的状态:有几个属性--first(判断当前循环体是否为第一个)、last(判断当前循环体是否为最后一个)、count(当前循环次数)、index(当前循环体的下标)</h4>

<c:forEach begin="3" end="9" var="each">

${each}

</c:forEach>

<br>

<c:forEach items="4123,2512,222,111,555,677,999" begin="1" end="3" var="each">

${each}

</c:forEach>

<br>

<c:forEach items="${persons}" step="2" var="person">

${person.username}<br>

</c:forEach>

<br>

<c:forEach items="${persons}" var="person" step="2" varStatus="status">

${person.username} --- ${status.first} --- ${status.last} --- ${status.count} --- ${status.index}<br>

</c:forEach>

<br>

<table border="1" style="border-collapse: collapse;">

<tr><td>id</td><td>用户名</td><td>真实姓名</td></tr>

<c:forEach items="${persons}" var="person">

<tr><td>${person.id}</td><td>${person.username }</td><td>${person.realname }</td></tr>

</c:forEach>

</table>

<h3>c:redirect标签:重定向</h3>

<%-- <c:redirect url="http://www.baidu.com"></c:redirect> --%>

<h3>c:import标签:指定一个url的页面在本页面中</h3>

<%--<c:import url="http://www.baidu.com"></c:import> --%>

<fmt:formatDate value="${d1}" pattern="yyyy年MM月dd日 HH时mm分ss秒"/>

<fmt:parseDate value="${ds}" var="d2" pattern="yyyy/MM/dd HH:mm:ss"></fmt:parseDate>

${fn:length(phone) }

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

推荐阅读更多精彩内容