EL和JSTL
EL: 获取数据简化JSP表达式;
EL : $ { EL表达式 }
功能: 获取数据;(✔)
执行运算:
操作WEB开发的常用的对象;
JSP的四个域:
pageContext(不常用)/request/session/application
pageContext作用范围是当前域 ;
${pageScope.name}返回""/${pageContext.name}返回null
获取数据原则:
(✔)存进去什么类型,取出来的就是什么集合!
(✔)map,java对象:用.属性;
(✔)数组,List:[] ---遍历;
域中存进数组,取出元素: ${arrs[索引]};
${ name },省略 pageScope/requestScope/sessionScope/applicationScope;
域中存进集合list,取出元素: ${list[索引]}
域中存进Map集合,取出元素: ${map.key}=value;
.和[]区别:
[]用于有下标的数组(数组,list集合),用于有属性的数据(map集合);
属性有特殊符号的用[];如,${ map["aaa.ee"] };
获取对象的数据: ${ user.id };
获取存有对象集合的数据: ${ userList[索引].username/id}
执行运算:
执行算数运算:${ n1+n2+n3 };
执行逻辑运算: ${n1<n2} - ${ n1 lt n2 }
> gt/< = le/ >= ge/ == eq/
执行关系运算:${ n1<n2 && n3<n4 } - ${ n1<n2 and n3<n4 }
执行三元运算:${n1<n2 ? "正确":"错误"}
empty运算: ${user==null}-${empty user}
${user!=null}-{not empty user}
EL操作WEB开发的常用的对象:
pageScope/requestScope/sessionScope/applicationScope-获取域中数据
param,paramValues -接收请求参数(在servlet中接收)
header,headerValues -获取请求头信息
initParam -获取全局初始化参数
(✔) cookie -web开发中的cookie
pageContext -web开发中的pageContext
(✔)获得Cookie中的值:${ cookie.cookie名字.value }
(✔)获取PageContext中的对象:
Ip地址:${pageContext.request.remoteAddr}
工程路径:${PageContext.request.contextPath}
JSTL: 判断 / 遍历
概述:JSP标准标签库;
学习原因:JSTL结合EL替换页面中<%%>
JSTL1.0: 不支持EL表达式
JSTL1.1/1.2:支持EL
JSTL的标签库:包含了五类标签;
core(核心标签),fmt(国际化标签),xml,sql,fn(JSTL提供EL函数库)
使用JSTL:
1.引入jar包(2个包/接口/实现类)
2.在页面中引入标签库<%@ taglib uri="" prefix="" %>去c.tld中找uri复制
Alt + /: 引入uri(包含jsp的);
c 标签:<c: set var="n1" value="30" scope="page"></c:set>
(✔)if标签:<c:if test="${n1<n2}">
n1小于n2
</c:if>
JSTL的常用标签:
<c:set var="i" value="zhangsan" scope"page"></c:set>
(✔)forEach遍历:
var:名字随便取的,items:取出待遍历的对象
数组: <c:forEach var="i" item="${arrs}">
${i}
</c:forEach>
集合: pageContext.setAttribute("list",list);
<c:forEach var="i" items="$(list)">
${i}
</c:forEach>
Map:<c:forEach var="entry" items="$(map)">
${entry.key} - ${entry.value}
</c:forEach>
从1到10
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>
从100到300
<c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
<c:if test="${ status.count % 3 == 0 }">
<font color="red">${ i }</font>
</c:if>
<c:if test="${ status.count % 3 != 0 }">
${ i }
</c:if>
</c:forEach>
status.index
status.count
JSTL提供的EL的函数库
${fn:contains("hello,word","hello")}
${fn:length("helloword")}
${fn:toLowerCase("ABCDE")}
${fn:split("a-b-c","-")} fn函数操作字符串
案例--商品信息显示到页面
1.创建数据库
2.使用MVC设计模式完成转账的案例
JSP的开发模式一:JSP+JavaBean
JSP的开发模式二:JSP+Servlet+javaBean(Servlet用于控制)称为MVC的设计模式.
M:JavaBean用于封装和处理数据,(模型层)
V:JSP用于显示到页面数据,(视图层)
C:Servlet, (Controller控制层)
|
|