EL表达式与JSTL

来源:互联网 发布:广州恒大淘宝俱乐部u16 编辑:程序博客网 时间:2024/06/02 07:17
1.
EL:表达式语言,提供了在JSP中简化表达式的方法,是一种简单语言。
不需要加任何jar包,不依赖任何其它库。
提供了在脚本元素范围外使用运行表达式的功能。
基本语法:

  ${expression}

示例:
${user.name}

  等价于

<%

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

Stringname=user.getName();

out.println(name);%>

2.

EL表达式优点:
减少Java代码的编写量,提高编码效率,简化JSP页面编写。
提供自动类型转换的功能。
${param.count+ 20}

等价于

<%

Stringstr_count = request.getParameter(“count”);

intcount = Interger.parseInt(str_count );

count= count + 20;

out.println(count);

%>

3.

EL提供.和[ ]两种运算符号来存取数据
.用于获取简单属性
${user.name}
[]用于获取带索引的属性
${shoppingCart[0].price }
4.

users对象中含有一个数组属性cooks[] ;取出其第一个元素的值.
语法格式为:

  ${user.cooks[0]}

获取对象属性的值,使用[]还可以写成:  ${user["nam"]}
使用以上语法格式前提是:对象中必须包含有getCooks()getNam()方法,。
5.

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

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

JSP页面

EL表达式

EL表达式访问

page

pageScope

${pageScope.user.name}

request

requestScope

${requestScope.user.name}

session

sessionScope

${sessionScope.user.name}

application

applicationScope

${applicationScope.user.name}


7.EL支持的算术运算符

运算符

说明

范例

结果

+

${17+5}

22

-

${17-5}

12

*

${17*5}

85

/ 或div

${17/5}或${17 div 5}

3

%或mod

余数

${17%5}或${17 mod 5}

2

8.

以下哪种写法是正确的?

${param.password1}== ${param.password2}

${${param.password1}== ${param.password2}}

${param.password1== param.password2} 


运算符

说明

范例

结果

== 或 eq

等于

 ${5==5} 或 ${5 eq 5}

True

!= 或 ne

不等于

 ${5!=5} 或 ${5ne5}

False

< 或 lt

小于

${5<5} 或 ${5lt5}

False

> 或 gt

大于

   ${5>5} 或 ${5 gt 5}

False

<= 或 le

小于等于

${5<=5} 或 ${5 le 5}

True

>= 或 ge

大于等于

${5>=5} 或 ${5ge5}

True


9.

运算符

说明

范例

结果

&& 或 and

交集

 ${A && B} 或 ${A and B}

True/ False

||或 or

并集

${A || B} 或 ${A or B}

True/ False

!或not

${ !A } 或 ${not A}

True/ False

Empty

判断值是否为null

${empty param.name}

True/ False

${A ? B : C}

条件判断

当A为true,执行B,否则执行C

( )

优先权

对算术和逻辑运算符的执行优先权


10.JSTL

JSP文件引入:

<%@ taglib prefix="c" uri="core" %>//uri是第三个

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

<c:set>主要用来将变量存储至jsp范围中
<c:set   var=“” value=“”  scope=“” />

或者

<c:set   var=“” scope=“” />
内容体
</c:set>
var 和scope这两个属性的值不能使用EL表达式来表示

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

<c:outvalue="内容"escapeXml="布尔值"/>


<c:remove>主要用来移除变量
<c:removevar=“” [scope=“”]/>
scope的默认值为page.
如果没有设定scope值,则从page/request/

  session/application范围依次查找var指定的对象,找到就删除,如果找不到就不做任何事情。


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

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

        Admin你好!

</c:if>


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

*<c:choose>

<c:whentest=“${condition }”>

….

</c:when>

<c:whentest=“${condition }”>

….

</c:when>

<c:otherwise>

….

</c:otherwise>

*</c:choose>

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

<%

  List list=new ArrayList();

  list.add("tom");

  list.add("jacky");

  list.add("kelly");

  request.setAttribute("list",list);

%>

<c:forEachitems="${list}" var="u">

  ${u}<br>

</c:forEach>



*

原创粉丝点击