【我的javaEE学习】elTagJsl学习笔记

一、EL表达式

 

1、EL简介

 

不是一种语言,只是一个表达式而已,是JSP中专门用于显示数据用的,从JSP2.0主要作用:获取数据并显示到页面上。

    简单易用:

<%

List<Book> cart = (List<Book>)request.getSession.getAttribute(“cart”);

out.write(cart.get(0).getName());

%>

等价于

EL表达式:${cart[0].name}  简单,写起来方便。

实际开发:不要在JSP中使用Java表达式,而要使用EL表达式。

2、EL表达式的基本语法

${EL表达式}

EL表达式,是从四大域对象中取数据的。

EL表达式中没有空指针异常,也没有数组越界,没有字符串连接。

EL表达式获取数据模型层的对应的GET方法。

     比如后台request.setAttribute(“a”,a);

         JSP页面${a.name}//这里的name对应的实体类getName()的

3、EL获取数据

3.1获取对象的属性

 

 

 

3.2 EL表达式运算符

 

3.2.1 算数、逻辑、关系

 

 

 

 3.2.2 判断empty运算符:

    判断一个字符串是否为””或其他对象是否为null,同时还能判断集合中是否有元素。

    ${empty num} <!-- 返回布尔值结果 -->

    3.2.3三元运算符:'布尔'?'true时执行' : 'false时执行'

  <input type="radio" name="gender" value="male" ${gender=='male'?'checked="checked"':''} />

3.3、EL中的隐含对象(不要和JSP的隐含对象混淆)

3.3.1对于JSP和EL隐含对象格式是不同的。JSP的是<%JSP隐含对象%>;而EL的是${EL隐含对象}。

3.3.2 EL表达式隐含对象一共有11个

 

 

 

<!-- JSESSIONID的值 -->

${cookie.JSESSIONID.value}

 

 

 

3.4定义和使用EL函数

 

3.4.1、EL不支持字符串操作;自定义的EL函数一般很少自定义,但也有公司自己封装好定义好的。

3.4.2、定义EL函数的开发步骤

⑴定义一个普通类,提供实现功能的静态方法(EL函数只能调用静态方法)

    public class MyFunction {

    //EL函数字符串转大写静态方法

    public static String toUppercase(String s){

     return s.toUpperCase();

    }

}

⑵EL函数进行配置:在WEB-INF目录下建立一个扩展名为tld(Tag Libary Definition)的xml文件。

        <?xml version="1.0" encoding="GBK" ?>

        <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

        version="2.0">

        <description>JSTL 1.0 functions library</description>

        <display-name>JSTL functions</display-name>

        <tlib-version>1.0</tlib-version>

        <short-name>el</short-name>

        <uri>http://www.abcd.com/el</uri>

 

        <function>

            <name>toUppercase</name>

            <function-class>d11.elTag.MyFunction</function-class>

            <function-signature>java.lang.String toUppercase(java.lang.String)</function-signature>

        </function>

        </taglib>

⑶在JSP中使用自定义的EL函数

首先:通过taglib指令引入外部的函数库

<%@ taglib uri="http://www.abcd.com/el" prefix="el"%>

然后:调用相关方法

    <%pageContext.setAttribute("s","abcdefg");%>

${el:toUppercase(s)}

 

二、自定义标签:简单标签

1、标签的作用

控制JSP中的逻辑处理。替换掉JSP中的Java脚本。

2、标签的编写步骤

javax.servlet.jsp.tagext.SimpleTag中的方法:

void doTag():遇到自定义标签时由服务器调用执行。

JspTag getParent():得到父标签的引用。

void setJspBody(JspFragment jsp):由服务器调用,传出JSP的片段

void setJspContext(JspContext jc):由服务器调用,传入当前页面的PageContext

void setParent(JspTag parent):由服务器调用,传入他的父标签

 

a、编写一个类,实现javax.servlet.jsp.tagext.SimpleTag,或者继承javax.servlet.jsp.tagext.SimpleTagSupport

 

 

 

b、对标签处理类进行配置

在WEB-INF目录下建立一个扩展名为tld的xml文件。

 

 

 

c、在JSP中使用

<%@ taglib uri="http://www.abcd.com/learnTag" prefix="learnTag"%>

< learnTag:ShowIp / >

 

注意:每次访问带有自定义标签的页面,自定义标签对应的处理类都会重新实例一次。

3、标签具体的作用:4个方面

⑴、控制主体内容是否显示。

 

 

 

4、标签的详细配置

 

<body-content>取值:body-content就是自定义标签<自定义标签>body-content</自定义标签>

JSP:jsp中能出现啥,标签主体内容就能出现啥。给传统标签用的。简单标签一用就报错。

empty:没有主体内容。简单和传统标签都能用。

scriptless:给简单标签用的,说明主体内容是非脚本。

tagdependent:把主体内容的EL表达式当做普通字符串对待。

 

 

 

 

三、JSTL标签库

1、JSTL简介

 

JSP Standard Tag Libary:JSP中标准的标签库。Apache实现的。

导入jar包:JavaEE的jar包中包含。

2、JSTL的组成

Core:核心标签库。通用逻辑处理

Fmt:国际化有关。

Functions:EL函数

SQL:操作数据库。不常用

XML:操作XML。不常用

3、JSTL中的Functions

taglib指令导入:<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

 

● 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函数:用于返回字符串中的字符的个数,或者集合和数组的元素的个数

4、JSTL中Core

也就是我们常说的C标签,加粗表示常用重要

taglib指令导入:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

c:remove 用于删除各种Web域中的属性,用于删除指定范围,如果没有指定,四个范围全删除

     <c:remove var=’varName’ [Scope=”{page|request|session|application}”]>

c:out 表示输出

     ①有个默认值default=”value”如果输出没有值,就可以用默认值来显示

     ②有个属性为escapeXml默认为true,表示完全默认输出<、>、&等特殊字符,比如<h1>11</h1>输出为<h1>11</h1>

c:set 用于把某一对象存在指定的域范围内

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值