当前位置 博文首页 > mataodehtml的博客:java学习之路——第六十天

    mataodehtml的博客:java学习之路——第六十天

    作者:[db:作者] 时间:2021-08-10 22:16

    1.17???? EL表达式 & JSTL标签

    EL表达式是一套简单的计算规则,用于给JSP标签的属性赋值,也可以直接用来输出

    EL表达式中的+号只做加法操作,不做拼接操作。

    EL表达式是为了简化我们的JSP代码,具体一点就是为了简化在JSP里面写的那些java代码。

    ?????? 如果使用:

    1.去除4个作用域中存放的值

    ?????? ${pageScope.name }

    ?????? ${requestScope.name }

    ?????? ${sessionScope.name }

    ?????? ${applicationScope.name }

    ?

    2.如果是数组(作用域的值)

    ?????? 若以pageContext存值

    ????????????? pageContext.setAttribute(“array”,str);

    ?????? ${array[0] },${array[1] }

    ?

    3.若是集合:

    ?????? pageContext.setAttribute(“list”,list);

    ?????? ${list[0] }….

    ?

    4.若是Map集合

    ?????? pageContext.setAttribute(“map”,map);

    ?????? ${map.key1 },${map.key2 }

    ?

    若key中有值为key.aa

    ?????? ${map[“key.aa”] }

    ?

    从域中取值,得先存值:

    ?????? ${pageScope.name }指定在pageScope中找name,不在其他地方找

    ?????? ${name }依次在pageContext,request,session,application中找到则不继续找

    ?

    若是对象:

    User user = new User(“zhangsan”,18);

    session.setAttribute(“u”,user);

    ${u.name } 和 ${u.age }取得

    ?

    ${empty u }判断是否为空

    ?

    一般使用EL表达式,用的比较多的,都是从一个对象中取出它的属性值,比如取出某个学生的姓名。

    EL表达式中的11个内置对象:

    ?????? ${对象名.成员 }

    pageContext?????????? header??????????? param??????????? cookie

    pageScope???????????? headerValues?? paramValues?? initParam

    requestScope

    sessionScope

    applicationScope

    ?

    JSTL:JSP Standard Tab Library?? jsp标准标签库

    ?????? 简化jsp的代码编写,替换<%%>的写法,一般与EL表达式配合

    我们使用的是JSTL1.1版本? 而1.0版本的JSTL不支持EL表达式

    ?

    怎么使用:

    ?????? 1.导入jar文件到工程的webContent/web-Inf/lib?? jstl.jar & standard.jar

    ?????? 2.在jsp页面上,使用taglib指令,来引入标签库

    ?????? 3.注意:如果想支持EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式

    常用标签:

    ?????? <c:set></c:if>

    ?????? <c:if test=””></c:if>

    ?????? <c:forEach></c:forEach>

    ?

    c:set

    ?????? <c:set var=”name” value=”zhangsan” scope=”session”></c:set>

    ?????? ${session.name }

    ?????? 声明一个对象name,对象的值zhangsan,存值在session域中,默认为page

    ?

    c:if

    ?????? 判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出,c:if是没有else的

    <c:set var=”age” value=”18” >

    ?????? <c:if test=”${age>26 }”>

    ????????????? 年龄大于26…

    </c:if>

    ?

    <c:if test=”${age<=26 }”>

    ?????? 年龄小于等于26

    </c:if>

    </c:set>

    ?

    定义一个变量名flag,去接收前面表达式的值,然后存在session域中

    ?????? <c:if? test=”${age>26 }”? var=”flag”? scope=”session”>

    ????????????? 年龄大于26

    ?????? </c:if>

    ?

    ?????? c:forEach

    ????????????? 从1开始遍历到10,得到结果赋值给i,并且会存储到page域中,step:增幅为2

    ?????? <c:forEach begin=”1” end=”10” var=”i” step=”2”>

    ????????????? ${i }

    </c:forEach>

    ?

    ?????? items:表示遍历哪一个对象,注意,这里必须写EL表达式

    ?????? var:遍历出来的每一个元素用user去接收:

    <c:forEach? var=”user” items=”${list }”>

    ?????? ${user.name }……${user.age }

    </c:forEach>

    ?

    choose标签:(相当于if(){}else if(){}…)

    性别:

    <c:choose>

    ?????? <c:when test=’${emp.gender==”m” }’>男</c:when>

    <c:when test=’${emp.gender==”f” }’>女</c:when>

    ??????

    </c:choose>

    ?

    cs
    下一篇:没有了