EL表达式与JSTL标签库

EL表达式

EL(Expression Language):表达式语言,提供了在JSP中简化表达式的方法,是一种简单语言。
不需要加任何jar包 ,不依赖任何其它库。
提供了在脚本元素范围外使用运行表达式的功能。

基本语法: ${ expression }
示例:
${user.name}

等价于
<%
User user=(User)session.getAttribute(“user”);
String name=user.getName();
out.println(name);
%>

EL表达式优点:

减少Java代码的编写量,提高编码效率,简化JSP页面编写。

提供自动类型转换的功能。

示例:
${param.count + 20}
等价于
<% 
String str_count = request.getParameter(“count”);
int count = Interger.parseInt(str_count );
count = count + 20;
out.println(count);
%>

EL提供.和 [ ]两种运算符号来存取数据

.用于获取简单属性
${ user.name}

[]用于获取带索引的属性
${ shoppingCart[0].price }
users对象中含有一个数组属性cooks[] ;取出其第一个元素的值.语法格式为:
${user.cooks[0]}
获取对象属性的值,使用[]还可以写成: ${user["nam"]}
使用以上语法格式前提是:对象中必须包含有getCooks()和getNam()方法。

EL中的隐含对象

pageScope
取得page范围的属性名称所对应的值
requestScope
取得request范围的属性名称所对应的值
sessionScope
取得session范围的属性名称所对应的值
applicationScope
取得application范围的属性名称所对应的值
param
如同request.getParameter(String name),返回String值
paramValues
如同reqeust.getParameterValues(String name);返回String[]值

EL隐含对象的使用

访问request对象属性:${requestScope.user.name}
如果省略隐含对象,则EL表达式将按照如下顺序寻找user对象: 
pageScope→requestScope→sessionScope→applicationScope

EL中与jsp对应的隐含变量



EL运算符

算术运算符————————————————————————————


关系运算符————————————————————————————


逻辑运算符————————————————————————————



JSTL标签库

JSTL全称JavaServer Pages Standard Tag Library,即JSP标准标签库

JSTL是一个标准的已经制定好的标签库,可以用到各种领域,如:基本输入输出、流程控制、循环、XML文件解析、数据库查询及国际化应用等。

Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入java程序(Scritping)的做法,以提高程序的可读性、维护性和方便性。


JSTL标签



如何将JSTL的jar包导入到Eclipse中?

将jar包复制到web工程的WEB-INF目录下的lib文件夹中,使用时在jsp页面中通过以下方式声明即可。
在页面通过URI直接引入标签库示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
根据不同的URI引入不同类型的标签库

JSTL核心标签库

核心标签库:基本输入输出、流程控制、迭代操作和URL操作。
分为四大类:
表达式操作:out, set, remove
流程控制:if,choose,when, otherwise;
迭代操作:forEach
URL操作:import,url,redirect,param;

表达式操作标签
<c:set>赋值标签
<c:set>主要用来将变量存储至jsp范围中
<c:set   var=“”  value=“”  scope=“” />
或者
<c:set   var=“”  scope=“” />
内容体
</c:set>
var 和 scope这两个属性的值不能使用EL表达式来表示

<c:out>输出标签
<c:out>用来作为输出语句,其效果同<%=%>.主要属性有:
value:用来输出的值,可以是EL表达式
default:如果没有找到value的值,此属性为默认值
escapeXml:如果value的值中含有标签,是否不解析标签
其语法格式为:
<c:out value="内容" escapeXml="布尔值"/>

<c:remove>移出标签
<c:remove>主要用来移除变量
<c:remove var=“” [scope=“”]/>
scope 的默认值为page.
如果没有设定scope值,则从page/request/ session/application范围依次查找var指定的对象,找到就删除,如果找不到就不做任何事情。

流程控制标签
流程控制类的标签分为2个:
<c:if>条件判断标签
和
<c:choose>组合标签
<c:when>
<c:otherwise>

<c:if>标签
<c:if>的用途和我们一般在程序中用的if一样,主用来页面进行流程控制。
示例:
<c:if  test=“testCondition” [var=“” scope=“”]/>
<c:if test=“${sessionScope.username==‘admin’}”>
        Admin你好!
</c:if>

<c:choose>组合标签
<c:choose>表示选择,作为<c:when>与<c:otherwise>的父标签来使用。
<c:choose>相当于switch
<c:when>相当于case,用进行条件匹配
<c:otherwise>相当于default,条件无匹配时,进入otherwise块

<c:choose>/<c:when>/<c:otherwise>组合标签
<c:choose>
<c:when test=“${condition }”>
….
</c:when>
<c:when test=“${condition }”>
….
</c:when>
<c:otherwise>
….
</c:otherwise>
</c:choose>

迭代操作标签
<c:forEach>循环输出标签
迭代循环:
<c:forEach items=“” var=“ ” begin=“” 
                     end=“” step=“”>
   ……
</c:forEach>
参数说明:
items:被迭代的集合对象
var:用来存放现在指到的成员,String
begin:开始位置,int.可省略
end:结束位置,int, end 值必须大于begin.可省略
step:每次迭代的间隔数,int,必须大于0.可省略




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值