学习JSP的el和jstl
html和css分离 html页面不能出现<% %> : 不方便维护。
使用页面的特殊的标签/表达式,来解决去掉<% %>的问题。
el的格式
格式:${…}
作用:用来获取我们存储再四大域对象的值
el表达式不需要导入任何的包,第三方直接引用。
关闭el
page指令中指定isELIgnored=“true”:表示该页面表达式不使用el表达式
在el表达式前加上转义字符 \ 也可以让el表达失效。
el不显示null
当el表达式获取的值为null的时候 显示的是""的字符串。
el表达式获取数据的方式
- 直接获取某个与对象的值:${…}
- 获取域对象中,存储数组的值:${str[0]}
- 获取域对象中,存储集合的值:${list[0]}
- 获取域对象中,存储bean(实体类)的值:
${user.id}:实体中必须要设置id的get方法,el表达式找的就是get方法
${user[“name”]}:name必须要和实体类中属性name的名字完全一样 - 获取域对象中,存储的map集合的值:
[]用于获取有下标的数据(数组,list集合)
.用户获取有属性的对象(map,对象)
如果属性名中有特殊的字符,那么必须使用[“属性值”],属性值必须用引号引起来
获取请求参数的值的方式
获取单个传递的属性的名字:name:
p
a
r
a
m
.
n
a
m
e
获
取
属
性
名
字
有
多
个
,
获
取
值
:
n
a
m
e
:
{param.name} 获取属性名字有多个,获取值:name:
param.name获取属性名字有多个,获取值:name:{paramValues.name[0]} :
name要跟 传递的参数的名字要完全一样。
如果获取不到值,在页面上显示""字符串 。
pageContext对象来获取内容
通过el表达式来获取项目的路径:${pageContext.request.contextPath}
el表达式的运算符
如何使用jstl标签库
- 先导入两个包
- 使用taglib指令,导入标签库
- fmt : 格式化标签库 : 日期时间格式化,数字格式化
<%@taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
核心标签的使用
<% request.setAttribute("",""); %>
var:相当于属性的名字
value:相当于属性的值
scope:表示域对象
例:<c:set var=“username” value=“郭德纲” scope=“request”></c:set>
<%=request.getAttribute("") %>
value:要用el表达式
.
.
.
∗
∗
例
:
:
<
c
:
o
u
t
v
a
l
u
e
=
"
{...} **例::<c:out value="
...∗∗例::<c:outvalue="{username}"></c:out>**
default:如果获取不到属性的值,就默认default的内容
escapeXml:设置value值是否识别标签:
例: 生日:<c:out value="${birth}" default=“找不到生日!!!”>
escapeXml=“false”:识别标签
例: 喜欢的歌:<c:out value=“小情歌” escapeXml=“false”></c:out>
移除域对象中的属性
例: <c:remove var=“username” scope=“request”></c:remove>
if的使用
if判断没有else
test:判断条件 里面必须写el表达式
例:
forEach的使用
var : 循环变量
begin:开始值
end:结束值
step:增长量
例如:计算1-100的和
如何循环遍历从sevlet中传递过来的集合,实体,map集合…显示在页面上
items:该属性放的是从servlet中传递的集合/实体/map集合…(必须要写el表达式)
var:“person”:表示集合中元素的别名
例:
<c:forEach items="${personList}" var=“person”>
${person.id} == ${person.name} == ${person.cla}
</c:forEach>