当前位置:文档之家› 第十一章 表达式语言EL和标准标签库JSTL

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

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

本章目标

●熟悉EL的基本用法

●熟悉JSTL的常用标记

●能编写简单的自定义标签

本章考核

●用JSTL和EL实现MVC的查询分页功能

●用自定义标签实现分页工具条

知识点1:EL Expression Language 以${起始、以}结尾,例如${https://www.doczj.com/doc/d12806029.html,er.sex} EL语法比传统jsp语法简洁,方便1.1、.和[]运算符

${https://www.doczj.com/doc/d12806029.html,er.sex}和${https://www.doczj.com/doc/d12806029.html,er["sex"]} 可以混合使用

在以下两种情况下,这两种表示方法是有差异的

●当属性名称中存在特殊字符,如.或者-就要使用[] 例如:${https://www.doczj.com/doc/d12806029.html,er["my-name"]}

●如果动态取值,例如${https://www.doczj.com/doc/d12806029.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.doczj.com/doc/d12806029.html,ername} ${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 https://www.doczj.com/doc/d12806029.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、将变量的存储到JSP范围或javaBean的属性中

语法:

[scope="{page|request|session|application}var变量的jsp范围"]/>

范例:将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、用于日期对象格式化为任意格式的字符串

语法:

[var="格式化后结果保存的变量"][scope="{page|request|session|application}变量范围"][timeZone="指定时区的信息"]/> 案例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="https://www.doczj.com/doc/d12806029.html,/jsp/jstl/core" prefix="c"%> 置于JSP页面顶部。

prefix属性可任意书写,uri属性为固定写法。

1.用来遍历集合与数组。

参数var为自定义参数,

参数items 为要循环遍历的容器,该标签可以循环任意数组,以及MAP,COLLECTION接口下的容器。

例如:

${product.p_name }${product.p_value }

href="/ShoppingDemo/servlet/CartServlet?id=${product.id }">购买

EL 表达式中${requestScope}的含义是在request作用域下寻找products 。<%@ taglib uri="https://www.doczj.com/doc/d12806029.html,/jsp/jstl/core" prefix="c"%>

测试删除

注册

登录

欢迎您, ${https://www.doczj.com/doc/d12806029.html,er_https://www.doczj.com/doc/d12806029.html,}

修改个人信息

目标

●EL的基本使用

●JSTL的常用标记

知识点1:EL

概念:Expression Language jsp语法和html语法分离

基本使用:以${开始、}结束

特点:与传统的jsp比较,el语法更加简洁,方便

特殊符号:. []

隐含内置对象

JSP内置对象EL隐含内置对象

Request requestScope

session sessionScope

application applicationScope

page pageScope

request.getParameter param

request.getParameterValues paramValues

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库

五大分类:核心标签库 l18N格式标签库 SQL标签库 XML标签库 函数标签库

JSTL书写语法:会跟EL混合在一起,完善一个标记与jsp语法的分离

<%

session.setAttribute("aa","microsoft");

//jsp传统输出

out.println(session.getAttribute("aa"));

%>


${aa}



JSTL和EL作用:避开jsp语法代码,利用标签,增强程序的可读性

JSTL的使用步骤

Step1:引入标签库<%@ taglib uri=”https://www.doczj.com/doc/d12806029.html,/jsp/jstl/core【引用名】“prefix=”c【别名】”%>

https://www.doczj.com/doc/d12806029.html,/jsp/jstl/fmt

注意:JavaEE4.0需要手动添加JavaEE5自动带着jstl标签库

Step2:使用标签

输出基本字符串: 输出变量:

循环标签

基本处理

判断标签


${i}

案例1:表单提交并用jstl和el处理提交元素

用户名:

性别:

学历:

个人兴趣爱好:

吃饭

睡觉

打豆豆

个人描述:

<%@page language="java"import="java.util.*"pageEncoding="gbk"%>

<%@taglib uri="https://www.doczj.com/doc/d12806029.html,/jsp/jstl/core"prefix="c"%>

<%@taglib uri="https://www.doczj.com/doc/d12806029.html,/jsp/jstl/fmt"prefix="fmt"%>

My JSP 'indexPost.jsp' starting page

用户名:${param.txtName}

性别:${param["rbtSex"]}

学历:${param.dropEdu}

个人兴趣爱好:


个人信息:${param.txtAInfo}


${i}

案例2:更改CRUD +分页留言板

UpdateLw.jsp

姓名:

/>

email:

主题:

内容:

ViewLw.jsp

${product.p_value }

href="/ShoppingDemo/servlet/CartServlet?id=${product.id }">购买

留言编号留言者姓名email主题内容更新删除
${o.lwid}${o.lwname}${o.lwemail}${o.lwSubject}${o.lwContent}更新删除

当前是${abc.nowpage}页 

首页上一页

下一页

href="ViewServlet?np=${abc.pagecount}">尾页

相关主题
文本预览
相关文档 最新文档