今天来讲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及自定义标签的更多相关文章

  1. JavaWeb学习笔记--4.EL表达式

    四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...

  2. JavaWeb学习篇之----EL表达式详解

    我们之前的几篇文章中都提到了一个EL表达式,那么这个EL表达式到底是什么东东呢?为什么用处那么大,下面我们就来看看EL表达式的相关内容 EL表达式简介: EL 全名为Expression Langua ...

  3. 1.6(学习笔记)EL表达式

    1.表达式输出属性 先来看一个简单的表达式小例子 el.jsp <%@ page language="java" contentType="text/html; c ...

  4. JSP/Servlet Web 学习笔记 DaySix —— EL表达式

    1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...

  5. Java Web学习笔记之---EL和JSTL

    Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression  Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...

  6. EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统

    EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...

  7. [转]EL表达式和JSTL表达式实例

    /* **Title:EL表达式和JSTL表达式实例 **Author:Insun **Blog:http://yxmhero1989.blog.163.com/ */ 为了方便写JSP,我们引入了E ...

  8. 简述jsp之EL表达式和jstl及其使用

    Jsp的指令之include指令include指令:代表的是页面的包含. 作用:可以把一些jsp的页面包含在一起,对外展示. 页面的布局,现在已经不用了,现在都用css+div进行布局.include ...

  9. java学习笔记06--正则表达式

    java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...

随机推荐

  1. 接口_简单get接口_第一个接口

    import flask,json # print(__name__) ##__name__代表当前这个python文件 server = flask.Flask(__name__) #把咱们当前的这 ...

  2. WebStorm配置SVN

    下载SVN客户端管理工具TortoiseSVN-1.8.5.25224-x64-svn-1.8.8,选择合适的Windows版本 配置项目目录,对应的VCS为Subversion 设置Subversi ...

  3. HBase集群出现NotServingRegionException问题的排查及解决方法

    HBase集群在读写过程中,可能由于Region Split或Region Blance等导致Region的短暂下线,此时客户端与HBase集群进行RPC操作时会抛出NotServingRegionE ...

  4. MySql必知必会内容导图

    <MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...

  5. Barn Repair

    链接 分析:我们不断统计相邻两个元素之间的差值,按照差值从大到小排序,在进行贪心即可 /* PROB:barn1 ID:wanghan LANG:C++ */ #include "iostr ...

  6. python之路,day6-面向对象

    一.面向过程编程 简单的说就是:如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但是如果你要处理的任务比较复杂,且需要不断迭代和维护的,那还是用面向对象最方便了. 二.面向对 ...

  7. E20180407-hm

    queue   n. (人或车辆) 行列,长队; 辫子;   vi. (人.车等) 排队等候;   vt. (使) 排队,列队等待; compatible  adj. 兼容的,相容的; 和谐的,协调的 ...

  8. 洛谷 - P1361 - 小M的作物 - 最小割 - 最大权闭合子图

    第一次做最小割,不是很理解. https://www.luogu.org/problemnew/show/P1361 要把东西分进两类里,好像可以应用最小割的模板,其中一类A作为源点,另一类B作为汇点 ...

  9. HDU 1230饭前开胃菜

    题意不讲了.. 没思路,上去就是干.... 两个所谓要加的数直接存到数组,开一个标记的数组,然后直接加,乱搞一波,就好了. 细心一点. #include<iostream> #includ ...

  10. maven构建web项目,cannot be cast to javax.servlet.Servlet

    今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖 <dependency> <groupId>javax.servlet</group ...