JSP基础:(8)EL表达式与JSTL标签库

EL表达式

          EL表达式语言,提供了在JSP中简化表达式的方法,是一种简单语言。不需要加任何jar包 ,不依赖任何其它库。提供了在脚本元素范围外使用运行表达式的功能。
        基本语法: ${ expression }
        示例:

  ${user.name}等价于
                <% User user=(User)session.getAttribute(“user”);
                    String name=user.getName();
                    out.println(name);%>

        EL表达式优点:

            减少Java代码的编写量,提高编码效率,简化JSP页面编写。提供自动类型转换的功能。           

 ${param.count + 20}
            等价于
                <% String str_count = request.getParameter(“count”);
                    int count = Interger.parseInt(str_count );
                    count = count + 20;
                    out.println(count);
                %>

        EL提供.和 []两种运算符号来存取数据
            .用于获取简单属性:${ user.name}
            []用于获取带索引的属性:${ shoppingCart[0].price }

            例如:users对象中含有一个数组属性cooks[] ;取出其第一个元素的值,语法格式为:${user.cooks[0]}
                  获取对象属性的值,使用[]还可以写成:    ${user["nam"]}    
                  又如获取客户端发送过来的header中的User-Agent值 :${header["User-Agent"]},此时若使用:${header.User-Agent}会被服务器解析为header.User减去Agent的值 

     EL中的隐含对象

pageScope 取得page范围的属性名称所对应的值
requestScope 取得request范围的属性名称所对应的值
sessionScope 取得session范围的属性名称所对应的值
applicationScope 取得application范围的属性名称所对应的值
param 如同request.getParameter(String name),返回String值
paramValues 如同reqeust.getParameterValues(String name);返回String[]值

      EL隐含对象的使用

           访问request对象属性:${requestScope.user.name},如果省略隐含对象,则EL表达式将按照如下顺序寻找user对象: pageScope→requestScope→sessionScope→applicationScope

            <%request.setCharacterEncoding("gbk"); %>
                用户名:${param.nam }<br>
                爱好:${paramValues.cooks }

    EL支持的关系运算符

运算符   说明     范例  结果
 && 或 and        交集  ${A && B} 或 ${A and B} True/ False
||或 or   并集    ${A || B} 或 ${A or B}  True/ False
 !或not   非  ${ !A } 或 ${not A}    True/ False
 Empty   判断值是否为null ${empty param.name}   True/ False
 ${A ? B : C}  条件判断 当A为true,执行B,否则执行C  
( ) 优先权  对算术和逻辑运算符的执行优先权  

JSTL标签库

            JSTL全称JavaServer Pages Standard Tag Library,即JSP标准标签库,JSTL是一个标准的已经制定好的标签库,可以用到各种领域,如:基本输入输出、流程控制、循环、XML文件解析、数据库查询及国际化应用等。
            Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入java程序(Scritping)的做法,以提高程序的可读性、维护性和方便性。
        JSTL中提供的标签主要分为5类: 核心标签库,I18N标签库,SQL标签库,XML标签库,函数标签库
        在页面通过URI直接引入标签库
                示例:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

            根据不同的URI引入不同类型的标签库               

 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

        核心标签库:基本输入输出、流程控制、迭代操作和URL操作。

            分为四大类:

                表达式操作:out, set, remove
                流程控制:if,choose,when, otherwise;
                迭代操作:forEach
                URL操作:import,url,redirect,param;

    <c:set>赋值标签

               <c:set>主要用来将变量存储至jsp范围中                  

 <c:set   var=“”  value=“”  scope=“” />
          或者        <c:set   var=“”  scope=“” />
                    内容体
 </c:set>

                注意:var 和 scope这两个属性的值不能使用EL表达式来表示

    <c:out>输出标签

                <c:out>用来作为输出语句,其效果同<%=%>.主要属性有:

 value 用来输出的值,可以是EL表达式
default 如果没有找到value的值,此属性为默认值
escapeXml 如果value的值中含有标签,是否不解析标签

          其语法格式为:

<c:out value="内容" escapeXml="布尔值"/>     

     <c:remove>移出标签

                <c:remove>主要用来移除变量
                <c:remove var=“” [scope=“”]/>
                scope 的默认值为page.如果没有设定scope值,则从page/request/session/application范围依次查找var指定的对象,找到就删除,如果找不到就不做任何事情。

     <c:if>标签

                <c:if>的用途和我们一般在程序中用的if一样,主用来页面进行流程控制。
                示例:                  

                    <c:if  test=“testCondition” [var=“” scope=“”]/>
                    <c:if test=“${sessionScope.username==‘admin’}”>
                            Admin你好!
                    </c:if>

       <c:choose>组合标签

                <c:choose>表示选择,作为<c:when>与<c:otherwise>的父标签来使用。
                <c:choose>相当于switch
                <c:when>相当于case,用进行条件匹配
                <c:otherwise>相当于default,条件无匹配时,进入otherwise块                        

                <c:choose>
                        <c:when test=“${condition }”>
                            ….
                        </c:when>
                        <c:when test=“${condition }”>
                            ….
                        </c:when>
                        <c:otherwise>
                            ….
                        </c:otherwise>
                    </c:choose>

        <c:forEach>循环输出标签

                迭代循环:               

 <c:forEach items=“” var=“ ” begin=“”   end=“” step=“”>
       ……
 </c:forEach>

             参数说明:

items 被迭代的集合对象
 var 用来存放现在指到的成员,String
begin 开始位置,int.可省略
end 结束位置,int, end 值必须大于begin.可省略
step 每次迭代的间隔数,int,必须大于0.可省略

                <c:forEach>示例

                    <%
                        List list=new ArrayList();
                        list.add("tom");
                        list.add("jacky");
                        list.add("kelly");
                        request.setAttribute("list",list);
                    %>
                    <c:forEach items="${list}" var="u">
                        ${u}<br>
                    </c:forEach>

猜你喜欢

转载自blog.csdn.net/u012060033/article/details/82700182
今日推荐