EL_JSTL
//Servlet中,:
User user = new User(1,"admin","admin","hahahaha");
HttpSession session =request.getSession();
session.setAttribute("user",user);
response.sendRedirect("index.jsp");
//index.jsp中,加判断,避免空指针异常
User user =(User)session.getAttribute("user");
if(user!=null){
out.write(,欢迎"+user.getRealname()+"光临本站");
}else{
out.write(",欢迎光临本站!");
}
<%-- 可能会报500异常:
,欢迎<%= ((User)session.getAttribute("user")).getRealname() %>光临本站! --%> <%-- 更为简单,稳妥的方式! --%>
欢迎${user.realname}光临本站!
<body>
<%--
加判断,避免空指针异常
<%
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 }
</body>
|
名称
|
描述
|
类型
|
默认值
|
|
test
|
若返回true,则执行本体内 容;否则,不执行。
|
Boolean
|
无
|
|
var
|
用来存储test执行后的结果
|
String
|
无
|
|
Scope
|
var 指定变量的存储范围
|
String
|
page
|
|
名称
|
说明
|
必须
|
默认值
|
|
items
|
循环体
|
No
|
None
|
|
begin
|
开始条件
|
NO
|
0
|
|
end
|
结束条件
|
NO
|
Last element
|
|
steo
|
步长
|
No
|
1
|
|
var
|
当前循环的变量名
|
No
|
None
|
|
varStatus
|
循环状态
|
No
|
None
|
<body>
<%
request.setAttribute("weather", "今天天气很热!"); pageContext.setAttribute("aaa", "aaa");
request.setAttribute("aaa", "bbb");
session.setAttribute("aaa", "ccc");
application.setAttribute("aaa", "ddd"); request.setAttribute("score", 78); List list = new ArrayList();
User u1 = new User(1, "admin", "admin", "老王");
User u2 = new User(2, "cai10", "admin", "蔡依林");
User u3 = new User(3, "cai20", "admin", "蔡依林");
User u4 = new User(4, "cai30", "admin", "蔡依林");
User u5 = new User(5, "cai40", "admin", "蔡依林");
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
request.setAttribute("persons", list); Date date = new Date();
request.setAttribute("d1", date); String dateStr = "1999/12/12 03:04:05";
request.setAttribute("ds", dateStr); String str2 = "18810950652";
request.setAttribute("phone", str2); %>
<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) }
</body>
EL_JSTL的更多相关文章
随机推荐
- 华为USG6320做双线-基于源地址的策略路由
通过配置策略路由实现不同源地址数据通过不同的链路转发. 组网需求 某企业公司拉了两条电信的光纤,分别为静态光纤和拨号光纤,前者主要用于服务器,后者则用于一般办公. 需求如下: 静态光纤:服务器专用 拨 ...
- 【转】经典网文:追MM与设计模式
设计模式做为程序员的“内功心法”,越来越受到.net 社区的重视,这种变化是很可喜的,Java社区走在了我们的前面,但这种状况也许有一天会发生改变. 从追MM谈Java的23种设计模式1.FACT ...
- 微信小程序报错.wxss无法找到
小程序原来一直运行正常,编译都没有问题,但今天更新了一下工具,就一直编译不过,报.wxss无法找到,搜索半天,才解决. 解决方案如下: 在控制台输入openVendor(), 在打开的目录中清除wcs ...
- p4555&bzoj2565 最长双回文串
传送门(洛谷) 传送门(bzoj) 题目 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 nnn 的串 SSS ...
- Spark 中的 RPC 的几个类
Spark 中 RPC 部分的涉及了几个类,有点晕,在此记录一下 1. RpcEndpoint: RPC的一个端点.给定了相应消息的触发函数.保证 `onStart`, `receive` and ...
- Oracle 12c登陆sys用户的方法
本机安装过oracle 12c之后,发现用sql plus执行命令conn sys/change_on_install as sysdba; 提示如下图: 后在网上搜索此问题,需要先登陆system账 ...
- 洛谷P5170 【模板】类欧几里得算法(数论)
传送门 此题剧毒,公式恐惧症患者请直接转去代码→_→ 前置芝士 基本数论芝士 题解 本题就是要我们求三个函数的值 \[f(a,b,c,n)=\sum_{i=0}^n \left\lfloor\frac ...
- android 拖拽图片&拖动浮动按钮到处跑
来自老外: 拖拽图片效果 方法一: 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- Tomcat底层通过全类名创建对象的实现
示例: //com.neuedu.baier.entity.User为User类的全类名 //要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 Class<?> user ...
- java 正则简单使用
查找是否包含字串 查询是否包含 #{name} 片段 这里有包含所以返回true String context = "select * from t_user where (name = # ...