本章目标
· 熟悉EL的基本用法
· 熟悉JSTL的常用标记
· 能编写简单的自定义标签
本章考核
· 用JSTL和EL实现MVC的查询分页功能
· 用自定义标签实现分页工具条
知识点1:EL Expression Language 以${起始、以}结尾 ,例如${sessionScope.user.sex} EL语法比传统jsp语法简洁,方便
1.1、.和[]运算符
${sessionScope.user.sex}和${sessionScope.user["sex"]} 可以混合使用
在以下两种情况下,这两种表示方法是有差异的
· 当属性名称中存在特殊字符,如.或者-就要使用[] 例如:${sessionScope.user["my-name"]}
· 如果动态取值,例如${sessionScopt.user[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
${param.username} ${param.sex}
兴趣
${s}
用户名:张三
性别:男
兴趣:旅游、阅读、影视
学历:高中
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 param.username}
${A?B:C} ${empty param.pcode?1:param.pcode} ()优先权
1.10、EL自定义函数
知识点2:JSTL javaServet Pages Standard Tag Library主要提供给javaweb开发人员一个
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
通用的标签函数库
· 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、将变量的存储到JSP范围或javaBean的属性中
语法:
范例:将2存储在request范围内
假若number为null,则移出request范围的变量number
假若username为空,则赋值null给username
2.1.3、
你好Admin先生
执行结果为${condition}
2.1.4、本身只当做和的父标签
语法:本体内容(和)
2.1.5、可以将集合中的成员一次浏览一遍
语法1:迭代一集合对象之所有成员
本体内容
语法2:迭代指定次数
本体内容
varStatus属性
Index:当前成员的索引序号0开始
Count:已经循环过的成员总数从1开始
First:是否第一个成员、last:是否最后一个成员
范例一:循环List
范例二:循环Map
范例三:循环数组
范例四:varStatus的用法
2.1.6、用来浏览一字符串的所有成员,其成员由定义符号分开
案例1:单一分隔符: ${str}
案例2:多个分隔符: ${str}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
2.2、l18N格式标签库(fmt标签) 国际化的,一共12个,被分成两类
国际化核心标签
格式化标签:
2.2.1、用于日期对象格式化为任意格式的字符串
语法:
案例1:格式化日期为yyyy-MM-dd格式
案例2:yyyy-MM-dd HH:mm:ss
2.2.2、用于格式化数字为制定字符串
语法:
案例1:价格保留到小数点后2位
案例2:以财务格式显示金额“1,888.90”
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="http://java.sun.com/jsp/jstl/core" prefix="c"%> 置于JSP页面顶部。
prefix属性可任意书写, uri属性为固定写法。
1.用来遍历集合与数组。
参数var为自定义参数 ,
参数items 为要循环遍历的容器,该标签可以循环任意数组,以及MAP,COLLECTION接口下的容器。
例如:
${product.p_name } |
${product.p_value } |
购买
|
EL 表达式中${requestScope}的含义是在request作用域下寻找 products 。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
测试删除
注册
登录
欢迎您 , ${sessionScope.user_info.name}
修改个人信息