javaweb part6---jstl以及el表达式

jstl / Java标准标签库/和EL表达式配合使用
在JSP中取代 Java代码

el表达式运算符号
gt >
lt <
ge >=
le <=
eq ==
ne !=
and &&
or ||
not !
xx.xxx xx["xxx"]
xx?xxx:xxx;

标签库 建议前缀
core/c
xml/x(不在jsp中处理xml文件)
fmt/fmt
sql/sql(不在jsp中操作数据库)
functions/fn

<前缀:标签名 属性名=属性值 属性名=属性值>
核心标签库
<c:out >输出
value 支持el表达式 用来指定输出内容
escapeXml 支持el 默认为true 对特殊符号进行转义的
default 当value为null时,输出default的值;

<c:set>将数据存放到web域中,或者其他的集合之中;
value 支持el. Object
var 不支持el String 指定变量名
scope 不支持el String 指定范围page/request.session.application
target 支持el Object target 和paroperty搭配使用
property 支持el String
<c:set scope="request" var="name" value="rupeng" ></c:set>
scope 和var 搭配使用 request 代表web域范围var代表变量名
通过${requestScope.name}来拿到 value 的值rupeng/
<%Person p1=new Person();
p1.setName("yqw");
request.setAttribute("person", p1);

Person p=new Person();
session.setAttribute("person", p);//将属性名为person的对象P放入request%>
<!-- target 就相当于用findAttribute()依次去四个域中找属性为person的对象.找到既返回-->
<!-- 而对象是Person p.可以设置他的属性property name. 而后取出来 .-->
<c:set target="${sessionScope.person}" property="name" value="jerry" ></c:set>
${person.name}<br/>${sessionScope.person.name}<br/>

<c:remove var="name" scope="request">
删除request这个范围里面,属性名为name的值.

catch 标签
把可能发生异常的代码用<c:catch var="exception"></c:catch>包裹起来
然后调用<c:out ${pageScope.exception}/>输出异常对象 这个对象有三个属性
getMessage/异常信息 getCause/异常原因 getStackTrace/异常的调用数

if 核心标签
test 支持el表达式 Boolean //条件表达式 这个是if标签必须有的.
var 不支持el String 可以声明一个变量接受test的结果
scope 不支持el String 默认存入范围是page、可以指定web域

<c:if test="${age eg 18}" var="rs">
大家都是成年人.
</c:if>
<c:out value="${rs}"/>
这里test为条件表达式 var 表示这个条件表达式的结果
test="empty name" 则代表判断name所指向的对象的属性是否为空.

<c:forEach items="${persons}" var="p">
${p} 就可以输出每一个 persons里面的对象;
</c:forEach>

多个条件表达式
<c:choose>
<c:when test="条件表达式1">
执行代码块
</c:when >
<c:when test-"条件表达式2">
执行代码块
</c:when>
</c:choose> when可以有多个表达式,<c:otherwise>可选

<c:redirect url="/" />

<a href="<c:url value='/index.jsp'>
<c:param name='name' value='999'></c:param>
<c:param name='id' value='10'></c:param></c:url>" >超链接</a>


jstl时,注意调用对象的.name 属性时,name的值与对象的私有变量是没有关系的.由get /set方法来决定.

posted on 2017-09-03 21:17  小丰残月  阅读(98)  评论(0编辑  收藏  举报

导航