黑马程序员技术交流社区

标题: 【石家庄校区】EL和JSTL [打印本页]

作者: 奔跑的蜗牛006    时间: 2018-5-21 15:29
标题: 【石家庄校区】EL和JSTL
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控制层)







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2