您的位置:首页 > Web前端 > JavaScript

JSP中的EL表达式和JSTL标签库

2016-09-12 02:42 260 查看
JSP中的EL表达式和JSTL标签库

一丶EL表达式

EL表达式概念
在JSP开发中,为了获取Servlet域对象中存储的数据,经常需要些许多Java代码,这样会使得JSP页面混乱,难以维护,因此,在JSP2.0规范提供了EL表达式.EL(Expression Language),它是一种简单的数据访问语言.


什么是EL
EL目的是使JSP写起来更加的简单,表达式语言灵感来源于ECMAScript和XPath表达式语言,它让JSP的代码更加简便.
EL语法:${表达式}
EL的使用
内置对象:
①作用域
内置对象名称:pageScope ,page作用域
内置对象名称:requestScope ,request作用域
内置对象名称:sessionScope ,session作用域
内置对象名称:applicationScope ,application作用域(servletContext)
②请求参数
param:获得一个参数
paramValues:获取一组参数
③请求头
header:获得一个请求头
headerValues:获取一组请求头
④JSP上下文对象
pageContext
⑤全局初始化参数
initParam
⑥cookie
cookie
EL的使用
EL的使用:获取数据
①自定义的数据,必须放在作用域中

代码描述:
①获得字符串


<!--设置传入不同域中的参数-->
<%
pageContext.setAttribute("name", "pname");
request.setAttribute("name", "rname");
session.setAttribute("name", "sname");
application.setAttribute("name", "aname");
%>
<!-- 获取 -->
<h2>获取不同域中数据:</h2>
${pageScope.name }<br/>
${requestScope.name }<br/>
${sessionScope.name }<br/>
${applicationScope.name }


显示效果:



②获得数组


<h2>获取数组</h2>
<%
String[] str2 = {"abc","cde","fgh","hij"};
pageContext.setAttribute("str22", str2);
%>
${str22 }<br/>
${str22[2] }


显示效果:



③获得List数据


<h2>获取List集合</h2>
<%
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
pageContext.setAttribute("list1", list);
%>
${list1 }<br/>
${list1[2] }


显示效果:



④获得Map<String,String>数据


<%
Map<String,String> map = new HashMap<String,String>();
map.put("demo01", "ok01");
map.put("demo02", "ok02");
map.put("demo03", "ok03");
map.put("demo04", "ok04");
pageContext.setAttribute("map01", map);
%>
${map01}<br/>
${map01.demo01 }<br/>


显示效果:



⑤获得Map<String,User>数据


<%
Map<String,User> map = new HashMap<String,User>();
map.put("user01", new User("张三","123"));
map.put("user02", new User("李四","456"));
map.put("user03", new User("王五","789"));
map.put("user04", new User("赵六","1234"));
pageContext.setAttribute("map01", map);

%>
${map01 }<br/>
${map01.user01 }<br/>
${map01.user02 }<br/>
${map01.user01.username }<br/>
${map01.user01.password }<br/>
${map01['user03'].username }


显示效果:



EL的使用:运算符

①模拟数据

<%

pageContext.setAttribute(“num1”, 10);

pageContext.setAttribute(“num2”, 20);

pageContext.setAttribute(“num3”, 30);

pageContext.setAttribute(“num4”, 40);

%>


②算数运算符

+/-/*/除(/)div/求余:%(mod)

<h2>算数运算符</h2>
${num1+num2 }<br/>
${num1-num2 }<br/>
${num1*num2 }<br/>
${num1/num2 }<br/><!-- div -->
${num1%num2 }<br/><!-- mod -->


显示效果:



③关系运算符
大于:>(gt),小于:<(lt),等于:==(eq),大于等于:>=(ge);小于等于:<=(le)


<h2>关系运算符</h2>
${num1<num2 }<__________>${num1 lt num2 }<br>
${num1>num2 }<__________>${num1 gt num2 }<br>
${num1<=num2 }<__________>${num1 le num2 }<br>
${num1>=num2 }<__________>${num1 ge num2 }<br>
${num1==num2 }<__________>${num1 eq num2 }


显示效果:



④逻辑运算符
与:&&,或:||,非:!


<h2>逻辑运算符</h2>
${num1<num2 && num2<num3 }<_________>${num1<num2 and num2<num3 }<br>
${num1<num2 || num2<num3 }<_________>${num1<num2 or num2<num3 }<br>
${!(num1<num2) }<_________>${not(num1<num2) }


显示效果:



⑤三元运算符
${n1 < n2 ?  "true" : "false"}


<h2>三元运算符</h2>
${num1>num2 ? "正确" : "错误" }


显示效果:



⑥empty运算符
对象是否为null
集合是否为null
字符串是否为null
代码演示:



<%
String str08=null;
pageContext.setAttribute("demo01",str08 );
pageContext.setAttribute("userrr", new User());
Map<String,String> map02 = new HashMap<String,String>();
map02.put("zyc", "good");
pageContext.setAttribute("map02", map02);
%>
字符串:${empty domo01}<br>
对象:${empty userrr }<br>
集合:${empty map02 }<br>

<%
String str08=null;
pageContext.setAttribute("demo01",str08 );
pageContext.setAttribute("userrr", new User());
Map<String,String> map02 = new HashMap<String,String>();
map02.put("zyc", "good");
pageContext.setAttribute("map02", map02);
%>
字符串:${empty domo01}<br>
对象:${empty userrr }<br>
集合:${empty map02 }<br>


显示效果:



二丶JSTL标签库

概念:

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。

JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。

JSTL包含的标签库
Core http://java.sun.com/jsp/jstl/core  前缀:c

118N http://java.sun.com/jsp/jstl/fmt 前缀:fmt

SQL http://java.sun.com/jsp/jstl/sql  前缀:sql

XML http://java.sun.com/jsp/jstl/xml  前缀:x

Functions http://java.sun.com/jsp/jstl/functions  前缀:fn

JSTL使用步骤:
①导包
jstl.jar
standard.jar
②引入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   prefix:前缀
③使用格式
<c:类型 相关参数> </c:类型>

Core标签库

out标签
<c:out value="ok"></c:out> value:输出的类容
if标签


<h2>if标签的使用</h2>
<!-- 进行计算${3>2},然后将值存入变量v,将变量v存放进HttpSession -->
<c:if test="${3>2 }" var="v" scope="session">
3是大于2的.
</c:if>
<hr/>
<c:set value="1" var="num" property="num"></c:set>
<c:if test="${num==1 }">
this is first login!!!
</c:if>
<hr/>
<%
User user = new User("张三","23");
pageContext.setAttribute("user", user);
%><c:if test="${empty user }">
您好没有登录,请登录!!!
</c:if>

<c:if test="${not empty user }">
${user.username },欢迎您!!!
</c:if>


显示效果:



test属性用于设置逻辑表达式;

var属性用于指定逻辑表达式中变量的名字;

scope属性用于指定var变量的作用范围,默认为page.

如果test的结果为true,那么标签将被执行,否则不执行

forEach标签:

<h2>foreach标签的使用</h2>
<%
int num = 10;
pageContext.setAttribute("num", num);
%><!-- begin="${num }" end="100" 从10到100 每个只赋给V,step="20"循环遍历是每次增加20个数,
varStatus="status"状态码可以看变化的次数等 -->
<c:forEach begin="${num }" end="100" var="v" step="20" varStatus="status">
${status.count }      ${status.first }      ${status.last }      ${v }<br/>
</c:forEach>


显示效果:



var属性用于指将当前迭代到的元素保存到page域中的名称;

items属性用于指定将迭代的对象;

varStatus属性用于指定当前迭代状态信息的对象保存到page域中的名称;

varStatus属性包含的相关状态:count表示元素在集合中的序号,从1开始累加,

index表示当前元素在集合中的索引,从0开始,

first表示当前是否为集合的第一个元素,

last表示当前是否为集合的最后一个元素,

begin属性指定从第几个元素开始迭代;

end属性指迭代到对应的值;

step属性用于指定迭代的步长,就是每次增加的数量.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: