欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第十一章 表达式语言EL和标准标签库JSTL.docx

    • 资源ID:24286672       资源大小:362.24KB        全文页数:8页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第十一章 表达式语言EL和标准标签库JSTL.docx

    本章目标l 熟悉 EL 的基本用法l 熟悉 JSTL 的常用标记l 能编写简单的自定义标签本章考核l 用 JSTL 和 EL 实现 MVC 的查询分页功能l 用自定义标签实现分页工具条知识点 1:EL Expression Language 以$起始、以结尾 ,例如$sessionScope.user.sex EL 语法比传统 jsp 语法简洁,方便1.1 、.和运算符$sessionScope.user.sex和$sessionScope.user"sex" 可以混合使用在以下两种情况下,这两种表示方法是有差异的l 当属性名称中存在特殊字符,如.或者-就要使用 例如:$sessionScope.user"my-name"l 如果动态取值,例如$sessionScopt.userdata 此时 data 是个变量变量自动搜索顺序属性范围Page Request Session Application在 EL 中的隐含对象名称pageScope requestScope sessionScope applicationScope1.2 、EL 变量 $变量名1.3 、自动类型转换$param.count+20等价于String strCount = request.getParameter("count");int count = Integer.parseInt(strCount); count = count+20; 1.4、EL 保留字【and、or、no、instanceof 】 【 eq、ne、lt、empty 】【 gt、le、ge、div】 【true、false、null、mod】1.5 、EL 隐含对象pageContext、pageScope、requestScope、sessionScope、applicationScope、Param【request.getParameter】、paramValues、header、headerValues、cookie、initParam【ServletContext.getInitParameter】$pageContext的常用部分$pageContext.request.queryString请求参数字符串$pageContext.request.requestUrl取得请求的 URL$pageContext.request.contextPath取得 web 应用的名称$pageContext.request.method取得请求方式 post、get$pageContext.request.protocol请求的 Http 协议(HTTP/1.1 HTTP/1.0)$pageContext.request.remoteUser取得用户名称$pageContext.request.remoteAddr取得用户的 ip 地址$pageContext.session.new判断 session 是否为新的$pageContext.session.id取得 session 的 id<fmt:requestEncoding value="GBK"/>用户名:张三$param.username $param.sex性别:男兴趣<c:forEach var="s" items="$paramValues.interest">兴趣:旅游、阅读、影视$s <br/>学历:高中<c:/forEach>1.6 、EL 算术运算符 + - * /或 div %或 mod1.7 、EL 关系运算符=或 eq 、!=或 ne、<或 lt、>或 gt、<=或 le、>=或 ge1.8 、EL 逻辑运算符 &&或 and |或 or !或 not1.9 、EL 其他运算符 empty 判断是否为空$empty param.username$A?B:C $empty param.pcode?1:param.pcode()优先权1.10 、EL 自定义函数知识点 2:JSTL javaServet Pages Standard Tag Library 主要提供给 javaweb 开发人员一个标准通用的标签函数库l Web 程序开发人员能够利用 JSTL 和 EL 来开发 Web 程序,取代传统直接在页面上嵌入 java 程序代码段的做法,以提高程序可读性、维护性和方便性l JSTL 五大标签函数库1、核心标签库 <c:out>2、L18N 格式标签库 <fmt:formatDate>3、SQL 标签库<sql:query> 4、XML 标签库<x:forBach> 5、函数标签库<fn:split>l 在 jsp 页面中使用<%taglib uri="" prefix=""/>引入 JSTL 标签库 如果没有声明指令,将无法使用 JSTL 的核心标签库的功l 另外 JSTL 也支持 EL 语法:n Jsp 语法:<%=messagelist.getMessage().getContent%>n 传统 JSTL:<c:out value="<%=messagelist.getMessage().getContent%> " escapeXML="false"/>n JSTL 搭配 EL<c:out value="$messagelist.getMessage().getContent " escapeXML="false"/>l 引入标签库的方式:新建 webproject 的时候,选择 J2EE4 下的 AddJSTL 复选框2.1 、核心标签库(c 标签)组成:基本输入输出、流程控制、迭代操作和 Url 操作分类功能分类标签名称core表达式操作流程控制 迭代操作URL 操作out、set、remove、catchif、 choose、when、otherwise forEach、forTokensimport、param、url、redirect2.1.1 、<c:out> 显示数据的内容,就像是<%=%>一样语法:<c:out value="$username" escapeXml="true| false是否转换字符,如<转换为&lt;"default="defaultValue"/>注:EL 项为 Y 表示该属性的内容可以使用 EL 表达式,写成 attribute="$表达式",N 则反之范例:<c:out value="hello world"/> <c:out value="$3+5"/> <c:out value="$param.data" default="no data"/><c:out value="<p>特殊字符</p>"/> <c:out value="<p>特殊字符</p>" escapeXml="true"/> 2.1.2、<c:set>将变量的存储到 JSP 范围或 javaBean 的属性中语法:<c:set value="value 要被存储的值" var ="varName 欲存入的变量的名称" scope="page|request|session|applicationvar 变量的 jsp 范围"/><c:set value="value" target="target 为一个 JavaBean 或 java.util.map 对象" property="property 执行 target 对象的属性"/> 范例:<c:set var="number" scope="request" value="$1+1"/> 将 2 存储在 request 范围内<c:set var="number" scope="request" value="$request.number"/> 假若 number 为 null,则移出 request 范围的变量 number<c:set var="number" property="name" value="$param.username"/> 假若 username 为空,则赋值 null 给 username 2.1.3、<c:if><c:if test="判断条件" var="用来存储 test 运算后的结果,即 true 或 false" scope="page|request|session|application>具体内容<c:if>范例:<c:if test="$param.username='Admin'" var="condition" scope="page">你好 Admin 先生</c:if><br> 执行结果为$condition2.1.4、<c:choose>本身只当做<c:when>和<c:otherwise>的父标签语法:<c:choose>本体内容(<c:when test=""></c:when>和<c:otherwise></c:otherwise>)</c:choose> 2.1.5、<c:forEach>可以将集合中的成员一次浏览一遍语法 1:迭代一集合对象之所有成员语法 2:迭代指定次数<c:forEach var="用来存放当前循环的成员" items="集合名称"<c:forEach var="" varStatus="" begin="" end="" step="">varStatus="用来存放单签指到相关成员" begin="开始位置" end="结束位置" step="每次迭代的间隔数">本体内容</c:forEach>本体内容</c:forEach> varStatus 属性Index:当前成员的索引序号 0 开始Count:已经循环过的成员总数从 1 开始First:是否第一个成员、last:是否最后一个成员范例一:循环 List范例二:循环 Map范例三:循环数组范例四:varStatus 的用法2.1.6、<c:forTokens>用来浏览一字符串的所有成员,其成员由定义符号分开案例 1:单一分隔符:<c:forTokens var="str" items="A,B,C,D" delims=","> $str </c:forTokens>案例 2:多个分隔符:<c:forTokens var="str" items="A,B:C-D,E" delims=",:-"> $str </c:forTokens>2.2 、l18N 格式标签库(fmt 标签) 国际化的,一共 12 个,被分成两类国际化核心标签 <fmt:setLocale><fmt:bundle><fmt:setBundle><fmt:message><fmt:param><fmt:requestString>格式化标签:<fmt:timeZone><fmt:setTimeZone><fmt:formatNumber><fmt:parseNumber><fmt:formatDate><fmt:parseDate> 2.2.1、<fmt:formatDate>用于日期对象格式化为任意格式的字符串语法:<fmt:formatDate value="需要格式化对象" pattern="日期格式掩码" type="日期的类型"var="格式化后结果保存的变量"scope="page|request|session|application变量范围"timeZone="指定时区的信息"/>案例 1:格式化日期为 yyyy-MM-dd 格式案例 2:yyyy-MM-dd HH:mm:ss2.2.2、<fmt:formatNumber>用于格式化数字为制定字符串语法:<fmt:formatDate value="需要格式化对象" pattern="数字格式掩码" type="currency|number|percent" var="格式化后结果保存的变量"scope="page|request|session|application变量范围"/>案例 1:价格保留到小数点后 2 位案例 2:以财务格式显示金额“1,888.90”2.3 、自定义标签Step1 创建标签的处理类(Tag HandlerClass) 要求 extens SimpleTagSupportStep2 创建标签库描述文件(Tag Library Descrptor File)*.tld 在 web.xml 文件下step3、在 JSP 文件中引入标签库开发自定义标签需要以下三个步骤来操作:案例 1:用 JSTL 和 EL 实现按类别查询图书JSTL 使用:<1> 导入<% taglib uri=" prefix="c"%> 置于 JSP 页面顶部。prefix 属性可任意书写, uri 属性为固定写法。1.<c:forEach></c:forEach>用来遍历集合与数组。参数 var 为自定义参数 ,参数 items 为要循环遍历的容器,该标签可以循环任意数组, 以及 MAP,COLLECTION 接口下的容器。例如:<table border='1'><c:forEach var="product" items="$requestScope.products"><tr><td>$product.p_name </td><td>$product.p_value </td><td><a href="/ShoppingDemo/servlet/CartServlet?id=$product.id "> 购买</a></td></tr></c:forEach></table>EL 表达式中$requestScope的含义是在 request 作用域下寻找products 。<% taglib uri=" prefix="c"%><!- session.setAttribute("icss",8); 避开代码 利用标签 增强程序可读性 -><c:set var="icss" value="$3+5" scope="session"/><!- 显示 icss 的值 -><c:out value="$icss"/><a href="c_set_remove2.jsp">测试删除</a><c:out value="icss"></c:out><c:remove var="icss" scope="session"/><c:out value="icss" ></c:out><c:if test="$sessionScope.user_info = null" ><p><a href="/ShoppingDemo/reg.jsp">注册</a><a href="/ShoppingDemo/login.jsp">登录</a></p></c:if><c:if test="$sessionScope.user_info != null" ><p><span>欢迎您 , $sessionScope.user_info.name</span><a href="/ShoppingDemo/login.jsp">修改个人信息</a></c:if><form action="/ShoppingDemo/servlet/CartServlet"><table border='1'><c:forEach var="product" items="$requestScope'products'"><tr><td><c:out value="$product.p_name "/></td><td>$product.p_value </td><td><a href="/ShoppingDemo/servlet/CartServlet?id=$product.id "> 购买</a></td></tr></c:forEach>目标l EL 的基本使用l JSTL 的常用标记知识点 1:EL概念:Expression Languagejsp 语法和 html 语法分离基本使用:以$开始、结束特点:与传统的 jsp 比较,el 语法更加简洁,方便特殊符号:. 隐含内置对象JSP 内置对象EL 隐含内置对象RequestrequestScopesessionsessionScopeapplicationapplicationScopepagepageScoperequest.getParameterparamrequest.getParameterValuesparamValues EL 表 达 式 的 灵 活 使 用 $ 属 性 名 Session.setAttribute(“aa”,”microsoft”);session 属性值Application.setAttribute(“bb”,”sun”);application 属性值El 表达式打印 3 种方式:$sessionScope.aa$sessionScope“aa”$aa【pageScope>requestScope>sessionScope>applicationScope 】<%application.setAttribute("aa","sun"); session.setAttribute("aa","microsoft"); request.setAttribute("aa","ibm"); pageContext.setAttribute("aa","hp");%>$sessionScope.aa$applicationScope"aa"$pageScope.aa$aa变量自动搜索顺序知识点 2:JSTL 标签 JavaServerPages standard 标准 tag 标签 library 库五大分类:核心标签库<c:XXX/>l18N 格式标签库<fmt:XXX/> SQL 标签库<sql:XXX/> XML 标签库<x:XXX/> 函数标签库<fn:XXX/><%session.setAttribute("aa","microsoft");/jsp传统输出out.println(session.getAttribute("aa");%><hr/><!- EL表达式的输出 ->$aa<hr/><!- JSTL和EL混合的输出 -><c:out value="$aa"></c:out><hr/>JSTL 书写语法:会跟 EL 混合在一起,完善一个标记与 jsp 语法的分离JSTL 和 EL 作用:避开 jsp 语法代码,利用标签,增强程序的可读性Step1:引入标签库<% taglib uri=” 【引用名】“ prefix=”c【别名】”%> 注意:JavaEE4.0 需要手动添加 JavaEE5 自动带着 jstl 标签库Step2:使用标签<c:XXX 标签输出基本字符串:<c:out value=”值”/> 输出变量:<c:out value=”$param.变量名”/>循环标签<c:forEach var=”循环控制变量名” items=”集合、数组名”>JSTL 的使用步骤基本处理</c:forEach>判断标签<c:forEach var="i" begin="1" end="10" ><c:if test="$i%2!=0" ><br/>$i</c:if></c:forEach>案例 1:表单提交并用 jstl 和 el 处理提交元素<form name="form1" method="post" action="indexPost.jsp"><p>用户名:<input type="text" name="txtName" id="textfield"></p><p>性别:<input name="rbtSex" type="radio" id="radio" value="男" checked>男<input type="radio" name="rbtSex" id="radio2" value="女">女</p><p>学历:<select name="dropEdu" id="select"><option>中学</option><option>高中</option><option>本科</option><option>专科</option></select></p><p>个人兴趣爱好:<input type="checkbox" name="chboxInterest" value="吃饭" id="chbox_0">吃饭<input type="checkbox" name="chboxInterest" value="睡觉" id="chbox_1">睡觉<input type="checkbox" name="chboxInterest" value="打豆豆" id="chbox_2">打豆豆</p><p>个人描述:<textarea name="txtAInfo" id="textarea" cols="45" rows="5"></textarea></p><p><input type="submit" name="ok" id="button" value="注册"></p></form><% page language="java" import="java.util.*" pageEncoding="gbk"%><% taglib uri=" prefix="c" %><% taglib uri=" prefix="fmt" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><title>My JSP 'indexPost.jsp' starting page</title></head><body><fmt:requestEncoding value="gbk"/>用户名:$param.txtName<br/> 性别:$param"rbtSex"<br/> 学 历 :$param.dropEdu<br/> 个人兴趣爱好:<c:forEach var="str" items="$paramValues.chboxInterest"><c:out value="$str"></c:out></c:forEach><br/>个人信息:$param.txtAInfo<c:forEach var="i" begin="1" end="10" ><c:if test="$i%2!=0" ><br/>$i</c:if></c:forEach></body></html>案例 2:更改 CRUD +分页留言板UpdateLw.jsp<form action="UpdateServlet" method="post" name="form1"><!- 传统的el调用session属性对象.方法 -><input type="hidden" name="lwid" value="$sessionScope.lwobject.lwid"/><!- 使用el可以调用对象中的私有属性 ->姓名:<input type="text" name="lwname" value="$sessionScope.lwobject.lwname"/><br/><!- 灵活 ->email:<input type="text" name="lwemail"value="$lwobject.lwemail"/><br/> 主题:<input type="text" name="lwsubject"value="$lwobject.lwSubject"/><br/> 内容:<textarea name="lwcontent" cols="15" rows="5">$lwobject.lwContent</textarea><br/><input type="submit" name="OK" value="更新"/><input type="button" name="back" onclick="window.location='ViewServlet'" value="返回"/></form>ViewLw.jsp<c:if test="$abc != null"><table width="400" border="1" cellspacing="0" cellpadding="0"><tr><td bgcolor="#3399FF"><strong>留言编号</strong></td><td bgcolor="#3399FF"><strong>留言者姓名</strong></td><td bgcolor="#3399FF"><strong>email</strong></td><td bgcolor="#3399FF"><strong>主题</strong></td><td bgcolor="#3399FF"><strong>内容</strong></td><td>更新</td><td>删除</td></tr><c:forEach var="o" items="$abc.data"><tr><td>$o.lwid</td><td>$o.lwname</td><td>$o.lwemail</td><td>$o.lwSubject</td><td>$o.lwContent</td><td><a href="GetOneServlet?lwid=$o.lwid">更新</a></td><td><a href="DeleteServlet?lwid=$o.lwid">删除</a></td></tr></c:forEach></table>当前是$abc.nowpage页 &nbsp;<c:if test="$abc.nowpage!=1"><a href="ViewServlet">首页</a> <a href="ViewServlet?np=$abc.nowpage-1 %>">上一页</a></c:if><c:if test="$abc.nowpage!=abc.pagecount"><a href="ViewServlet?np=$abc.nowpage+1 ">下一页</a> <a href="ViewServlet?np=$abc.pagecount">尾页</a></c:if></c:if><c:if test="$abc = null"><c:out value="您非法进入,所以什么也看不到 "/></c:if>

    注意事项

    本文(第十一章 表达式语言EL和标准标签库JSTL.docx)为本站会员(暗伤)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开