版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.本章目标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.us
2、er"my-name"l 如果动态取值,例如$sessionScopt.userdata 此时data是个变量1.2、EL变量 $变量名变量自动搜索顺序属性范围在EL中的隐含对象名称PagepageScopeRequestrequestScopeSessionsessionScopeApplicationapplicationScope1.3、自动类型转换$param.count+20等价于String strCount = request.getParameter("count"); int count = Integer.parseInt(strCo
3、unt); 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】$pag
4、eContext的常用部分$pageContext.request.queryString请求参数字符串$pageContext.request.requestUrl取得请求的URL$pageContext.request.contextPath取得web应用的名称$pageContext.request.method取得请求方式post、get$pageCtocol请求的Http协议(HTTP/1.1 HTTP/1.0)$pageContext.request.remoteUser取得用户名称$pageContext.request.remoteAddr取
5、得用户的ip地址$pageContext.session.new判断session是否为新的$pageContext.session.id取得session的id<fmt:requestEncoding value="GBK"/>$param.username $param.sex兴趣<c:forEach var="s" items="$paramVerest"> $s <br/> <c:/forEach>用户名:张三性别:男兴趣:旅游、阅读、影视学历:高中1.6、EL
6、算术运算符 + - * /或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程序
7、开发人员能够利用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标签库 如果没有声明指令,将无法
8、使用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&
9、quot;/>l 引入标签库的方式:新建webproject的时候,选择J2EE4下的AddJSTL复选框2.1、核心标签库(c标签)组成:基本输入输出、流程控制、迭代操作和Url操作分类功能分类标签名称core表达式操作out、set、remove、catch流程控制if、 choose、when、otherwise迭代操作forEach、forTokensURL操作import、param、url、redirect2.1.1、<c:out> 显示数据的内容,就像是<%=%>一样语法:<c:out value="$username" e
10、scapeXml="true|false是否转换字符,如<转换为<"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&quo
11、t;/> <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|sessio
12、n|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
13、" scope="request" value="$request.number"/>假若number为null,则移出request范围的变量number<c:set var="number" property="name" value="$param.username"/>假若username为空,则赋值null给username2.1.3、<c:if><c:if test="判断条件" var="用来存储test运
14、算后的结果,即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:oth
15、erwise>的父标签语法:<c:choose>本体内容(<c:when test=""></c:when>和<c:otherwise></c:otherwise>)</c:choose>2.1.5、<c:forEach>可以将集合中的成员一次浏览一遍语法1:迭代一集合对象之所有成员<c:forEach var="用来存放当前循环的成员" items="集合名称" varStatus="用来存放单签指到相关成员" beg
16、in="开始位置" end="结束位置" step="每次迭代的间隔数">本体内容</c:forEach>语法2:迭代指定次数<c:forEach var="" varStatus="" begin="" end="" step="">本体内容</c:forEach>varStatus属性Index:当前成员的索引序号0开始Count:已经循环过的成员总数从1开始First:是否第一个成员、la
17、st:是否最后一个成员范例一:循环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" d
18、elims=",:-"> $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:p
19、arseNumber><fmt:formatDate><fmt:parseDate>2.2.1、<fmt:formatDate>用于日期对象格式化为任意格式的字符串语法:<fmt:formatDate value="需要格式化对象" pattern="日期格式掩码" type="日期的类型" var="格式化后结果保存的变量"scope="page|request|session|application变量范围"timeZone="指定时
20、区的信息"/>案例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变量范围"
21、/>案例1:价格保留到小数点后2位案例2:以财务格式显示金额“1,888.90”2.3、自定义标签开发自定义标签需要以下三个步骤来操作:Step1创建标签的处理类(Tag Handler Class) 要求 extens SimpleTagSupportstep3、在JSP文件中引入标签库Step2创建标签库描述文件(Tag Library Descrptor File)*.tld在web.xml文件下案例1:用JSTL和EL实现按类别查询图书JSTL 使用:<1> 导入<% taglib uri=" prefix="c"%> 置于J
22、SP页面顶部。prefix属性可任意书写, uri属性为固定写法。1.<c:forEach></c:forEach>用来遍历集合与数组。参数var为自定义参数 , 参数items 为要循环遍历的容器,该标签可以循环任意数组,以及MAP,COLLECTION接口下的容器。例如:<table border='1'><c:forEach var="product" items="$requestSducts"><tr><td>$product.p_name
23、</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"%>&
24、lt;!- 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
25、"></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/
26、login.jsp">登录</a></p></c:if> <c:if test="$sessionScope.user_info != null" ><p><span>欢迎您 , $sessionScope.user_</span><a href="/ShoppingDemo/login.jsp">修改个人信息</a></c:if><form action="/ShoppingDemo/
27、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="/Sh
28、oppingDemo/servlet/CartServlet?id=$product.id ">购买</a></td></tr></c:forEach>目标l EL的基本使用l JSTL的常用标记知识点1:EL概念:Expression Language jsp语法和html语法分离基本使用:以$开始、结束特点:与传统的jsp比较,el语法更加简洁,方便特殊符号:. 隐含内置对象JSP内置对象EL隐含内置对象RequestrequestScopesessionsessionScopeapplicationapplicationSc
29、opepagepageScoperequest.getParameterparamrequest.getParameterValuesparamValuesEL表达式的灵活使用 $属性名Session.setAttribute(“aa”,”microsoft”);session属性值Application.setAttribute(“bb”,”sun”);application属性值El表达式打印3种方式:$sessionScope.aa $sessionScope“aa” $aa【pageScope>requestScope>sessionScope>application
30、Scope】 变量自动搜索顺序 <% application.setAttribute("aa","sun"); session.setAttribute("aa","microsoft"); request.setAttribute("aa","ibm"); pageContext.setAttribute("aa","hp"); %> $sessionScope.aa $applicationScope"aa&
31、quot; $pageScope.aa$aa 知识点2:JSTL标签 JavaServerPages standard标准 tag标签 library库五大分类:核心标签库<c:XXX/> l18N格式标签库<fmt:XXX/> SQL标签库<sql:XXX/> XML标签库<x:XXX/> 函数标签库<fn:XXX/>JSTL书写语法:会跟EL混合在一起,完善一个标记与jsp语法的分离 <% session.setAttribute("aa","microsoft"); /jsp传统输出
32、 out.println(session.getAttribute("aa"); %> <hr/> <!- EL表达式的输出 -> $aa <hr/> <!- JSTL和EL混合的输出 -> <c:out value="$aa"></c:out> <hr/>JSTL和EL作用:避开jsp语法代码,利用标签,增强程序的可读性JSTL的使用步骤Step1:引入标签库<% taglib uri=” 【引用名】“ prefix=”c【别名】”%>注意:JavaE
33、E4.0需要手动添加 JavaEE5自动带着jstl标签库Step2:使用标签<c:XXX标签输出基本字符串:<c:out value=”值”/> 输出变量:<c:out value=”$param.变量名”/>循环标签<c:forEach var=”循环控制变量名” items=”集合、数组名”> 基本处理</c:forEach>判断标签<c:forEach var="i" begin="1" end="10" ><c:if test="$i%2!=0
34、" ><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>性别: <i
35、nput name="rbtSex" type="radio" id="radio" value="男" checked> 男 <input type="radio" name="rbtSex" id="radio2" value="女"> 女</p> <p>学历: <select name="dropEdu" id="select"> <
36、;option>中学</option> <option>高中</option> <option>本科</option> <option>专科</option> </select> </p> <p>个人兴趣爱好: <input type="checkbox" name="chboxInterest" value="吃饭" id="chbox_0"> 吃饭 <input typ
37、e="checkbox" name="chboxInterest" value="睡觉" id="chbox_1"> 睡觉 <input type="checkbox" name="chboxInterest" value="打豆豆" id="chbox_2"> 打豆豆 </p> <p>个人描述: <textarea name="txtAInfo" id="t
38、extarea" cols="45" rows="5"></textarea> </p> <p> <input type="submit" name="ok" id="button" value="注册"> </p> </form><% page language="java" import="java.util.*" pageEncoding
39、="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> <
40、;/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"></
41、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="Up
42、dateServlet" method="post" name="form1"> <!- 传统的el调用session属性对象.方法 -> <input type="hidden" name="lwid" value="$sessionScope.lwobject.lwid"/> <!- 使用el可以调用对象中的私有属性 -> 姓名:<input type="text" name="lwname"
43、value="$sessionScope.lwobject.lwname" /><br/> <!- 灵活 -> email:<input type="text" name="lwemail" value="$lwobject.lwemail"/><br/> 主题:<input type="text" name="lwsubject" value="$lwobject.lwSubject"/>
44、<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&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西机电职业技术学院单招综合素质笔试备考试题含详细答案解析
- 2026年广西英华国际职业学院单招综合素质考试备考试题含详细答案解析
- 2026辽宁铁岭市市本级3家单位补充招聘公益性岗位工作人员5人笔试备考试题及答案解析
- 2026年上海外国语大学贤达经济人文学院单招综合素质笔试参考题库含详细答案解析
- 2026上半年天津事业单位统考东丽区招聘20人笔试备考题库及答案解析
- 4.6.4 激素调节教学设计(2025-2026学年人教版2024八年级上册生物)
- 2026年宁德福安市赛岐镇建设投资开发有限公司招聘1人笔试备考试题及答案解析
- 2026新疆八团连队特聘农技员招募12人笔试备考题库及答案解析
- 2026江西南昌新建区晨鸣专项招聘笔试备考试题及答案解析
- 2026江西南昌市劳动保障事务代理中心派遣制收费员招聘2人笔试备考试题及答案解析
- 2025年重庆高考物理试卷试题真题及答案详解(精校打印)
- 土改田施工方案(3篇)
- 河北省衡水中学2026届数学高一上期末质量跟踪监视模拟试题含解析
- 安乐死协议书模板
- 2026内蒙古自治区行政执法人员专场招收1991人参考笔试试题及答案解析
- 断路器绝缘电阻试验方法
- 智能机械臂路径规划算法的创新探索
- 成自铁路成都罗家湾牵引站220千伏供电工程环境影响报告表
- 作业人员安全管理档案
- 开票税点自动计算器
- 2020泰和安TS-C-6001AG TS-C-6001AT应急照明控制器安装使用说明书 Ver.1.0,2020.09
评论
0/150
提交评论