本章目标
●熟悉EL的基本用法
●熟悉JSTL的常用标记
●能编写简单的自定义标签
本章考核
●用JSTL和EL实现MVC的查询分页功能
●用自定义标签实现分页工具条
知识点1:EL Expression Language 以${起始、以}结尾,例如${https://www.wendangku.net/doc/df2806029.html,er.sex} EL语法比传统jsp语法简洁,方便1.1、.和[]运算符
${https://www.wendangku.net/doc/df2806029.html,er.sex}和${https://www.wendangku.net/doc/df2806029.html,er["sex"]} 可以混合使用
在以下两种情况下,这两种表示方法是有差异的
●当属性名称中存在特殊字符,如.或者-就要使用[] 例如:${https://www.wendangku.net/doc/df2806029.html,er["my-name"]}
●如果动态取值,例如${https://www.wendangku.net/doc/df2806029.html,er[data]} 此时data是个变量
1.2、EL变量${变量名}
变量自动搜索顺序
属性范围在EL中的隐含对象名称
Page pageScope
Request requestScope
Session sessionScope
Application applicationScope
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
${https://www.wendangku.net/doc/df2806029.html,ername} ${param.sex}
兴趣
性别:男
兴趣:旅游、阅读、影视学历:高中
1.6、EL算术运算符+ - * /或div %或mod
1.7、EL关系运算符==或eq 、!=或ne、<或lt、>或gt、<=或le、>=或ge
1.8、EL逻辑运算符&&或and ||或or !或not
1.9、EL其他运算符empty判断是否为空${empty https://www.wendangku.net/doc/df2806029.html,ername}
${A?B:C} ${empty param.pcode?1:param.pcode} ()优先权
1.10、EL自定义函数
知识点2:JSTL javaServet Pages Standard Tag Library主要提供给javaweb开发人员一个标准通用的标签函数库
●Web程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入java程序代码段的做法,以提高程序可读性、维护性和方便性
●JSTL五大标签函数库
1、核心标签库
2、L18N格式标签库
3、SQL标签库
4、XML标签库
5、函数标签库
●在jsp页面中使用<%@taglib uri="" prefix=""/>引入JSTL标签库如果没有声明指令,将无法使用JSTL的核心标签库的功
●另外JSTL也支持EL语法:
?Jsp语法:<%=messagelist.getMessage().getContent%>
?传统JSTL:
?JSTL搭配EL
●引入标签库的方式:新建webproject的时候,选择J2EE4下的AddJSTL复选框
2.1、核心标签库(c标签)
组成:基本输入输出、流程控制、迭代操作和Url操作
分类功能分类标签名称
core 表达式操作out、set、remove、catch
流程控制if、choose、when、otherwise
迭代操作forEach、forTokens
URL操作import、param、url、redirect
2.1.1、
语法:
注:EL项为Y表示该属性的内容可以使用EL表达式,写成attribute="${表达式}",N则反之
范例:
2.1.2、
语法: [scope="{page|request|session|application}var变量的jsp范围"]/> 范例: 2.1.3、 你好Admin先生 2.1.4、 语法: 2.1.5、 语法1:迭代一集合对象之所有成员 本体内容 语法2:迭代指定次数 varStatus属性 Index:当前成员的索引序号0开始 Count:已经循环过的成员总数从1开始 First:是否第一个成员、last:是否最后一个成员 范例一:循环List 范例二:循环Map 范例三:循环数组 范例四:varStatus 的用法 2.1.6、 案例1:单一分隔符: --------------------------------------------------------------------------------------------------------------------------------------------------------------- 2.2、l18N 格式标签库(fmt 标签) 国际化的,一共12个,被分成两类 国际化核心标签 格式化标签: 语法: [var="格式化后结果保存的变量"][scope="{page|request|session|application}变量范围"][timeZone="指定时区的信息"]/> 案例1:格式化日期为yyyy-MM-dd 格式 案例2:yyyy-MM-dd HH:mm:ss 2.2.2、 语法: 2.3、自定义标签 开发自定义标签需要以下三个步骤来操作: Step1创建标签的处理类(Tag Handler Class) 要求extens SimpleTagSupport step3、在JSP文件中引入标签库 Step2创建标签库描述文件(Tag Library Descrptor File)*.tld在web.xml文件下案例1:用JSTL和EL实现按类别查询图书 JSTL 使用: <1> 导入<%@ taglib uri="https://www.wendangku.net/doc/df2806029.html,/jsp/jstl/core" prefix="c"%> 置于JSP页面顶部。 prefix属性可任意书写,uri属性为固定写法。 1. 参数var为自定义参数, 参数items 为要循环遍历的容器,该标签可以循环任意数组,以及MAP,COLLECTION接口下的容器。 例如: href="/ShoppingDemo/servlet/CartServlet?id=${product.id }">购买 EL 表达式中${requestScope}的含义是在request作用域下寻找products 。<%@ taglib uri="https://www.wendangku.net/doc/df2806029.html,/jsp/jstl/core" prefix="c"%>
执行结果为${condition}${product.p_name } ${product.p_value }
欢迎您, ${https://www.wendangku.net/doc/df2806029.html,er_https://www.wendangku.net/doc/df2806029.html,}