Javaweb学习笔记6—EL表达式与JSTL及自定义标签
今天来讲javaweb的第六阶段学习。
EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解。
老规矩,首先先用一张思维导图来展现今天的博客内容。
ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载
另外:如果图看不清的话请右击---在新窗口中打开会清楚很多。
如果你觉得我的文章还不是很差的话,请点一下文章下方的顶,或者评论一下更好了。我将倍加感谢。
一、EL表达式
1 ,EL简介
Expression Language。它不是一种语言,只是一个表达式。
用于将数据显示到JSP上。它的出现是替代java表达式的,从jsp2.0开始。
特点就是简单易用:
java表达式
<%List<Book> list = new ArrayList();%>
<%=list.get(0).getBookName() %>
EL表达式:
${list[0].bookname}E
2 ,EL表达式基本语法
${表达式}
注意:EL表达式是从四大域对象中获取数据(application,session,request,pagecontext);
细节:EL表达式中没有空指针异常,没有数组下标越界,没有字符串拼接。
3, EL表达式的数据获取
3.1获取数据
3.2 EL运算符
3.21empty运算符:
判断一个字符串是否为""或其他对象是否为null,同时还能判断集合中是否有元素。
3.22三元运算符:
4 EL中的隐式对象(共11个)
EL中的隐式对象 |
类型 |
对应JSP隐式对象 |
备注 |
PageContext |
Javax.serlvet.jsp.PageContext |
PageContext |
完全一样 |
ApplicationScope |
Java.util.Map |
没有 |
应用层范围 |
SessionScope |
Java.util.Map |
没有 |
会话范围 |
RequestScope |
Java.util.Map |
没有 |
请求范围 |
PageScope |
Java.util.Map |
没有 |
页面层范围 |
Header |
Java.util.Map |
没有 |
请求消息头key,值是value(一个) |
HeaderValues |
Java.util.Map |
没有 |
请求消息头key,值是数组(一个头多个值) |
Param |
Java.util.Map |
没有 |
请求参数key,值是value(一个) |
ParamValues |
Java.util.Map |
没有 |
请求参数key,值是数组(一个名称多个值) |
InitParam |
Java.util.Map |
没有 |
全局参数,key是参数名称,value是参数值 |
Cookie |
Java.util.Map |
没有 |
Key是cookie的名称,value是cookie对象 |
5 EL表达式定义和使用函数
EL不支持字符串操作。
定义和使用函数的四步:
a.写一个普通的java类
(注意,普通Java类实现功能的方法必须是静态的,因为EL只能调用静态的方法)
b. 在WEB-INF下创建一个xml,文件的扩展名为.tld
c. 在jsp中使用taglib指令引入
d. 在jsp中使用
二、JSTL
1 JSTL简介
JSP Standard Tag Libary:JSP中标准的标签库。
该标签库是由Apache实现的。
导入jar包:JavaEE的jar包中包含。
2 JSTL的组成
Core:核心标签库。通用逻辑处理
Fmt:国际化有关。
Functions:EL函数
SQL:操作数据库。不用
XML:操作XML。不用
3 JSTL的Core
分类 |
功能分类 |
标签名称 |
Core |
表达式操作 |
out set remove catch |
流程控制 |
if choose when otherwise |
|
迭代操作 |
forEach forTokens |
|
URL操作 |
import param url param redirect param |
详情请参考【CORE核心标签.doc】
4 JSTL的Functions介绍
使用taglib指令导入:详情请看【第18章 JSTL Functions标签库.doc】
fn:contains函数:用于判断在源字符串中是否包含目标字符串。
fn:containsIgnoreCase函数:用于判断在源字符串中是否包含目标字符串,并且在判断时忽略大小写。
fn:startsWith函数:用于判断源字符串是否以指定的目标字符串开头。
fn:endsWith函数:用于判断源字符串是否以指定的目标字符串结尾。
fn:indexOf函数:用于在源字符串中查找目标字符串,并返回源字符串中最先与目标字符串匹配的第一个字符的索引。
fn:replace函数:用于把源字符串中的一部分替换为另外的字符串,并返回替换后的字符串。
fn:substring函数:用于获取源字符串中的特定子字符串。
fn:substringBefore函数:用于获取源字符串中指定子字符串之前的子字符串。
fn:substringAfter函数:用于获取源字符串中指定子字符串之后的子字符串
fn:split函数:用于将源字符串拆分为一个字符串数组。
fn:join函数:用于将源字符串数组中的所有字符串连接为一个字符串。
fn:toLowerCase函数:用于将源字符串中的所有字符改为小写。
fn:toUpperCase函数:用于将源字符串中的所有字符改为大写。
fn:trim函数:用于将源字符串中的开头和末尾的空格删除。
fn:escapeXml函数:用于将源字符串中的字符"<"、">"、"""和"&"等转换为转义字符。
fn:length函数:用于返回字符串中的字符的个数,或者集合和数组的元素的个数
三、自定义标签
1 自定义标签的作用
自定义Jsp中的程序处理,替换掉JSP中的Java脚本。
2 自定义标签的编写步骤
实现标签自定义需要实现javax.servlet.jsp.tagext.SimpleTag或者继承javax.servlet.jsp.tagext.SimpleTagSupport
javax.servlet.jsp.tagext.SimpleTag中的方法:
void doTag():遇到自定义标签时由服务器调用执行。
JspTag getParent():得到父标签的引用。
void setJspBody(JspFragment jsp):由服务器调用,传入JSP的片段
void setJspContext(JspContext jc):由服务器调用,传入当前页面的PageContext
void setParent(JspTag parent):由服务器调用,传入他的父标签
第一步:写一个类继承SimpleTagSupport
第二步:创建一个.tld的xml文件在里面配置tag的信息。
第三步:在jsp中引入自定义标签
3 自定义标签的作用 4个
a、控制主体内容是否显示。
b、控制结束标签后的JSP内容不执行。
c、控制主体内容重复执行。
d、改变主体内容后再输出。
4 自定义标签配置的body-cotent说明
<body-content>取值:
JSP:jsp中能出现啥,标签主体内容就能出现啥。给传统标签用的。简单标签一用就报错。
empty:没有主体内容。简单和传统标签都能用。
scriptless:给简单标签用的,说明主体内容是非脚本。
tagdependent:把主体内容的EL表达式当做普通字符串对待。
5 自定义标签的案例
a.模拟for
Javaweb学习笔记6—EL表达式与JSTL及自定义标签的更多相关文章
- JavaWeb学习笔记--4.EL表达式
四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...
- JavaWeb学习篇之----EL表达式详解
我们之前的几篇文章中都提到了一个EL表达式,那么这个EL表达式到底是什么东东呢?为什么用处那么大,下面我们就来看看EL表达式的相关内容 EL表达式简介: EL 全名为Expression Langua ...
- 1.6(学习笔记)EL表达式
1.表达式输出属性 先来看一个简单的表达式小例子 el.jsp <%@ page language="java" contentType="text/html; c ...
- JSP/Servlet Web 学习笔记 DaySix —— EL表达式
1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...
- Java Web学习笔记之---EL和JSTL
Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...
- EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...
- [转]EL表达式和JSTL表达式实例
/* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...
- 简述jsp之EL表达式和jstl及其使用
Jsp的指令之include指令include指令:代表的是页面的包含. 作用:可以把一些jsp的页面包含在一起,对外展示. 页面的布局,现在已经不用了,现在都用css+div进行布局.include ...
- java学习笔记06--正则表达式
java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...
随机推荐
- Python之如果添加扩展包
1.首先下载好你需要的扩展包 下载地址是http://www.lfd.uci.edu/~gohlke/pythonlibs/ 2.将你下载好的.whl文件放在你的python文件夹中的Lib\site ...
- 根据用户时区显示当地时间 javascript+php
在跨时区应用中会用到下面代码,这是以前写的一段代码. 服务器保存相关时间配置,保存形式为GMT时间,客户端需要根据客户所在时区做相应显示,以符合客户习惯. 1. [代码][JavaScript]代码 ...
- Fleck websocket官方事例
Fleck websocket官方事例 server: using Fleck;using System;using System.Collections.Generic;using System.L ...
- 理解Objective-C Runtime(四)Method Swizzling
Objective-C对象收到消息之后,究竟会调用何种方法需要在运行期间才能解析出来.那你也许会问:与给定的选择子名称相应的方法是不是也可以在runtime改变呢?没错,就是这样.若能善用此特性,则可 ...
- JAVA Synchronized (一)
<编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java线程同步中的一 ...
- JavaScript-Tool:wdtree
ylbtech-JavaScript-Tool:wdtree 1.返回顶部 1. 插件描述:wdTree是一个轻量级jQuery插件用于创建一个带有嵌套Check Boxe的树形控件. wdTree是 ...
- bzoj1038&&500AC!
序列dp 先开始想了一个类似区间dp的东西...少了一维 然后发现似乎不太对,因为女生的最大差和男生的最大差并不相等 dp[i][j][x][y]表示当前有i个人,j个男生,男生和女生的后缀最大差是x ...
- 【华为2016上机试题C++】最高分是多少
[编程题] 最高分是多少 时间限制:1秒 空间限制:65536K 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括 ...
- hdoj1260【简单DP】
这题就是一个人买还是两个人买,直接选择一下,而且默认是排好了的,就是DP一下,可能不知道DP的人,也是这么写的吧.DP是一种思想啊. #include <bits/stdc++.h> us ...
- 洛谷P2569 [SCOI2010]股票交易(单调队列)
传送门 惭愧……这种题目都没看出来…… 首先,我们用$dp[i][j]$表示在第$i$天,手上有$j$股时的最大收益 第一,我们可以直接买股票,即$dp[i][j]=-j*AP_i$,这个直接计算即可 ...