El表达式、Jstl

来源:互联网 发布:三国演义电视剧 知乎 编辑:程序博客网 时间:2024/06/06 18:52

1、EL表达式、使用的目的是尽可能的减少JSP网页中java代码的数量

1、要求使用Servlet2.4/JSP2.0的Container  。        为什么EL不建议使用》因为有些服务器容器版本低、不支持2.4 。2、EL可以向JSP页面输出动态内容。是对JSP中Java代码的补充。可以输出:    1. 静态内容        2. 作用域对象内容        3. 隐式对象内容

2、JSP EL语言定义

   EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。1、EL表达式的语法。    ${expression}    ${"Hello world"}   //输出字符串常量    ${str}             //输出字符串变量str的值    ${3 + 2}           //输出3+2的结果    ${user.name}       //输出user对象的name属性, 访问对象user的getName()方法以得到name成员的值    ${user["name"]}    //同上    ${sessionScope["user"].name}       //同上    ${list[1]}         //访问list对象的第二项。    ${map["key"]}  //访问map指定键的值。2、“[]”与“.”运算符    EL表达式提供“.”和“[]”两种运算符来存取数据。    当要存取的属性名称中包含一些特殊字符,如“.”或“?”等并非字母或数字的符号时就一定要使用“[]”。        ${user.My-Name}应当改为${user["My-Name"] }    注意:“[]”可以访问集合或者数组的元素、Bean属性。3、EL中的有效表达式(有效表达式可以包含文字、操作符、变量(对象引用)调用)            boolean         true  、false            Integer             与Java类似。可以包含任何正数或负数、例如24、-45、567            float               与java类似。可以包含任何正的或负的浮点数、例如 -1.8E 、-45 、-4.567            String              任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。必须注                    意,如果在字符串两端使用双引号,则单引号不需要转义。            null                    null4、变量、对象的引用    EL表达式存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为没有指定哪一个范围的username,所以它会依序从page、request、session、application范围查找。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。5、隐式对象。    一:与范围有关的隐式对象        pageScope使用范围:当前页面        requestScope使用范围:当前请求        sessionScope使用范围:当前会话        applicationScope使用范围:服务器启动到结束        例如:要取得session中储存一个属性username的值。        session.getAttribute("username");   取得username的值        在EL中:            ${sessionScope.username}    二:与输入有关的隐式对象         param:请求中传递的是单个值        ${param.name}        paramValues :请求中传递的是数组或多个值      ${paramValues.name}    三:其他隐式对象。        cookie :读取保存在cookie 中的值        header和headerValues:储存用户浏览器和服务端用来沟通的数据        initParam:取得设定web站点的环境参数         pageContext:取得其他有关用户要求或页面的详细信息        注意:            取得请求的参数字符串:${pageContext.request.queryString}<br/>            取得请求的URL,但不包括请求其参数字符串:${pageContext.request.requestURL}<br/>            服务的web application的名称:${pageContext.request.contextPath}<br/>            取得HTTP的方法(GET、POST):${pageContext.request.method}<br/>            取得使用的协议(HTTP/1.1、HTTP/1.0):${pageContext.request.protocol}<br/>            取得用户的IP地址:${pageContext.request.remoteAddr }<br/>            取得session的ID:${pageContext.session.id}<br/>            取得主机端的服务信息:${pageContext.servletContext.serverInfo}<br/>

3、JSTL 。JSTL由四个定制标签库(core、format、xml 和 sql)组成。

  • core 标签库
  • format 标签库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。
  • xml 库包含一些标签,这些标签用来操作通过 XML 表示的数据。
  • sql 库定义了用来查询关系数据库的操作。

一:表达式操作包括四个标签:

<c:out>     在JSP中显示数据  类似于<%=%>  或${  }语法:1、<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />2、<c:out value="value" [escapeXml="{true|false}"]>                     default value             </c:out> <c:set>     <c:set>主要用来将变量储存至JSP范围中或是JavaBean的属性中。语法:1、<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>2、<c:set var="varName" [scope="{ page|request|session|application }"]>                     … 本体内容             </c:set> <c:remove>   用来移除变量        1、<c:remove var="varName" [scope="{ page|request|session|application }"] /><c:catch>          <c:catch var="error_message">

二:流程控制分类中包含标签。

用途就和我们一般在程序中用的if一样
语法:

        1、<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>         2、<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>                 本体内容             </c:if><c:choose>      本身只当做 <c:when> 和 <c:otherwise> 的父标签        <c:choose>            :                <c:when>                </c:when>                :                <c:otherwise>                </c:otherwise>            :         </c:choose>     注意:            <c:choose>的本体内容只能有:             空白             1或多个 <c:when>             0或1个 <c:otherwise><c:when>  的用途就和我们一般在程序中用的when一样    语法:(test    如果表达式的结果为true,则执行本体内容,false则相反)        <c:when test="testCondition" >             本体内容         </c:when>    注意:<c:when>必须有test属性,当test中的表达式结果为true时,则会执行本体内容;如果为false时,则不会执行    在同一个<c:choose>中时,<c:when>必须在 <c:otherwise> 之前 。<c:otherwise>    在同一个 <c:choose> 中,当所有 <c:when> 的条件都没有成立时,则执行 <c:otherwise> 的本体内容    语法:        <c:otherwise>                  本体内容         </c:otherwise>    注意:在同一个 <c:choose> 中时,<c:otherwise> 必须为最后一个标签 。<c:forEach>标签支持两种不同样式的迭代:    1、整数范围上的迭代(类似 Java 语言的 for 语句)            <c:forEach var=“varName” varstatus=“varStatusName”begin=“begin”                    end=“end” step=“step”>                    body content            </c:forEach>        示例:            <%@ page contentType="text/html;charset=GB2312"%>            <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>            <html><head><title>c:forEach</title></head>            <body>            <table>                <tr><th>行号</th><th>数值</th><th>平方</th>   </tr>                <c:forEach var="x" begin="0" end="10" step="2" varStatus="status">                    <tr>                        <td><c:out value="${status.count}" /></td>                        <td><c:out value="${x}" /></td>                        <td><c:out value="${x * x}" /></td>                    </tr>                </c:forEach>            </table>            </body>            </html>    2、集合上迭代(类似 Java 语言的 Iterator)            <c:forEach var=“varName” items=“collection” varstatus=“varStatusName”                    begin=“begin” end=“end” step=“step”>                    body content            </c:forEach>        示例:            <%@ page contentType="text/html;charset=GB2312" import="java.util.*"%>            <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>            <html>            <head>            <title>c:forEach</title>            </head>            <body>            <%                List userList = new ArrayList();                userList.add("jack");                userList.add("green");                userList.add("lucy");                request.setAttribute("userList",userList);            %>                <c:forEach var="username" items="${userList}">                    ${username}<br>                </c:forEach>            </body>            </html>    注意:<c : foreach  varStatus="status">   varStatus用来存储当前遍历计数相关信息、会将信息存储到status中。status变量包含4个属性:count      index     first     last  .<c:forTokens>       用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的    语法:        <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]                 [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>              本体内容         </c:forTokens>三:JSTL包含三个与URL操作有关的标签,它们分别为    <c:import>--用来将其他文件的内容包含起来        语法:            <c:import url="expression" context="expression"                      charEncoding="expression" var="name" scope="scope">                    <c:param name="expression" value="expression"/>                     ...            </c:import>    <c:redirect>--网页的导向     可以将客户端的请求从一个JSP网页导向到其他文件        语法:            <c:redirect url="expression" context="expression">                  <c:param name="expression" value="expression"/>                  ...            </c:redirect>    <c:url>--url的产生
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 笔记本电脑自带鼠标动不了怎么办 包包弹簧扣松了怎么办 耳钉氧化成黑色怎么办 想买点小股票玩玩要怎么办 玩具子弹打到眼睛怎么办 玩具汽车遥控器码乱了怎么办 索尼A7屏幕花了怎么办? 汽车冷冻器坏了怎么办 sim卡损坏怎么办 补卡 异或门一个输入怎么办 迷你世界加不了好友怎么办 电脑软件显示无效应用程序怎么办 美的滚筒洗衣机打不开门怎么办 手机存储卡坏了怎么办 回南天地板潮湿怎么办 lg滚筒洗衣机门打不开怎么办 西门子滚桶洗衣机门打不开怎么办 洗衣机离合器螺丝卸不动怎么办 门锁保险栓坏了怎么办 小车电瓶没电了怎么办 重装机兵战车底盘坏了怎么办 父亲沉迷安利十年该怎么办 脚的大脚骨痛怎么办 自考准考证号忘记了怎么办 有桌子老师不出马怎么办 电商遇到职业打假人怎么办 超市遇到职业打假人怎么办 阿里巴巴碰到职业打假人怎么办 商家遇到职业打假人怎么办 买过期食品不赔怎么办 淘宝卖假货遇到打假师怎么办 网店遇到职业打假人怎么办 职业打假师把我起诉法院怎么办 被职业打假举报了怎么办 车档杆拉不动显示不在p档怎么办 宜人贷还不起了怎么办 买高跟鞋一只脚合适一只脚挤怎么办 脚瘦穿高跟鞋撑不起来怎么办 银川市阅海幼儿园进不去怎么办 考编专业不对口怎么办 北京55中国际部怎么办