笔记 - EL表达式 和 JSP标签

一、EL表达式

1 EL作用

jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<%  %>。

以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码。

使用EL表达式替换掉jsp表达式

 

                   EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!

 

                   语法: ${变量或表达式}

        

2 EL语法

1)输出基本数据类型变量

1.1 从四个域获取

${name}

1.2 指定域获取

${pageScope.name}

域范围: pageScoep / requestScope / sessionScope / applicationScope

2)输出对象的属性值

Student

3)输出集合对象

List  和 Map

4)EL表达式计算

二、jsp标签

1 jsp标签的作用

jsp标签作用:替换jsp脚本。

1)流程判断(if   for循环)

2)跳转页面(转发,重定向)

3)。。。。。

2 Jsp标签分类

1)内置标签(动作标签): 不需要在jsp页面导入标签

2)jstl标签: 需要在jsp页面中导入标签

3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签

3 动作标签

转发标签:     <jsp:forward />

参数标签:  <jsp:pararm/>

包含标签:  <jsp:include/>

原理: 包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。

(先翻译再合并),动态包含

静态包含  vs  动态包含的区别?

1) 语法不同

静态包含语法: <%@inclue file="被包含的页面"%>

动态包含语法: <jsp:include page="被包含的页面">

2)参数传递不同

静态包含不能向被包含页面传递参数

动态包含可以向被包含页面传递参数

3)原理不同

静态包含: 先合并再翻译

动态包含: 先翻译再合并

4 JSTL标签

JSTL (全名:java  standard  tag  libarary   -  java标准标签库  )

核心标签库 (c标签库) 天天用

                            国际化标签(fmt标签库)

                            EL函数库(fn函数库)

xml标签库(x标签库)

sql标签库(sql标签库)

5 使用JSTL标签步骤

1) 导入jstl支持的jar包(标签背后隐藏的java代码)

注意:使用javaee5.0的项目自动导入jstl支持jar包

2)使用taglib指令导入标签库

<%@taglib uri="tld文件的uri名称" prefix="简写" %>

      3)在jsp中使用标签

6 核心标签库的重点标签:

保存数据:     <c:set></c:set>

获取数据:     <c:out value=""></c:out>

单条件判断:   <c:if test=""></c:if>

多条件判断:    <c:choose>

<c:when test=""></c:when>

<c:otherwise></c:otherwise>

              </c:choose>

循环数据:      <c:forEach></c:forEach>

<c:forTokens items="" delims=""></c:forTokens>     (遍历特殊字符串)

重定向:       <c:redirect></c:redirect>

7 自定义标签

1 引入

需求: 向浏览器输出当前客户的IP地址 (只能使用jsp标签)

2 第一个自定义标签开发步骤

1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类


/**

* 标签处理器类

* @author APPle

* 1)继承SimpleTagSupport

*

*/

public class ShowIpTag extends SimpleTagSupport{

private JspContext context;

/**

* 传入pageContext

*/

@Override

public void setJspContext(JspContext pc) {

this.context = pc;

}

/**

* 2)覆盖doTag方法

*/

@Override

public void doTag() throws JspException, IOException {

//向浏览器输出客户的ip地址

PageContext pageContext = (PageContext)context;

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();

String ip = request.getRemoteHost();

JspWriter out = pageContext.getOut();

out.write("使用自定义标签输出客户的IP地址:"+ip);

}

}

2)在web项目的WEB-INF目录下建立itcast.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)


<?xml version="1.0" encoding="UTF-8" ?>

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

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

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

version="2.1">

<!-- 标签库的版本 -->

<tlib-version>1.1</tlib-version>

<!-- 标签库前缀 -->

<short-name>itcast</short-name>

<!-- tld文件的唯一标记 -->

<uri>http://gz.itcast.cn</uri>

<!-- 一个标签的声明 -->

<tag>

<!-- 标签名称 -->

<name>showIp</name>

<!-- 标签处理器类的全名 -->

<tag-class>gz.itcast.a_tag.ShowIpTag</tag-class>

<!-- 输出标签体内容格式 -->

<body-content>scriptless</body-content>

</tag>

</taglib>

3) 在jsp页面的头部导入自定义标签库

<%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>

4) 在jsp中使用自定义标签

<itcast:showIp></itcast:showIp>

3 自定义标签的执行过程

问题: http://localhost:8080/day14/01.hellotag.jsp  如何访问到自定义标签?

前提: tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!

1)访问01.hellotag.jsp资源

2)tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法

3)检查jsp文件的taglib指令,是否存在一个名为http://gz.itcast.cn的tld文件。如果没有,则报错

4)上一步已经读到itcast.tld文件

5)读到<itcast:showIp> 到itcast.tld文件中查询是否存在<name>为showIp的<tag>标签

6)找到对应的<tag>标签,则读到<tag-class>内容

7)得到 gz.itcast.a_tag.ShowIpTag

构造ShowIpTag对象,然后调用ShowIpTag里面的方法

4 自定义标签处理器类的生命周期

SimpleTag接口:

void          setJspContext(JspContext pc)  --设置pageContext对象,传入pageContext(一定调用)

通过getJspCotext()方法得到pageContext对象

void          setParent(JspTag parent)  --设置父标签对象,传入父标签对象,如果没有父标签,则不                                                                                                                          调用此方法。通过getParent()方法得到父标签对象。

void     setXXX(值)             --设置属性值。

void          setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象                                                                                                                         中,然后传入JspFragment对象。通过getJspBody()方法                                                                                                                                  得到标签体内容。如果没有标签体内容,则不会调                                                                                                                                   用此方法

void          doTag()                     --执行标签时调用的方法。(一定调用)

5 自定义标签的作用

1)控制标签体内容是否输出

2)控制标签余下内容是否输出

3)控制重复输出标签体内容

4)改变标签体内容

5)带属性的标签

步骤:

5.1 在标签处理器中添加一个成语变量和setter方法


//1.声明属性的成员变量

private Integer num;

//2.关键点: 必须提供公开的setter方法,用于给属性赋值

public void setNum(Integer num) {

this.num = num;

}

6 输出标签体内容格式

JSP:   在传统标签中使用的。可以写和执行jsp的java代码。

scriptless:  标签体不可以写jsp的java代码

empty:    必须是空标签。

tagdependent : 标签体内容可以写jsp的java代码,但不会执行。

7 案例

核心标签库: c:if   c:choose+c:when+c:otherwise   c:forEach

高仿核心标签库

时间: 2024-10-13 11:05:23

笔记 - EL表达式 和 JSP标签的相关文章

JSP系列:(4)JSP进阶-EL表达式和JSP标签

jsp的核心语法: jsp表达式 <%=表达式%>和 jsp脚本<%>. 以后开发jsp的原则: 尽量在jsp页面中少写,甚至不写java代码. 目标: 1)使用EL表达式代替jsp表达式. 2)使用JSP标签代替jsp脚本. 1.EL表达式 1.1.EL作用 使用EL表达式替换掉jsp表达式 EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!! 语法: ${变量或表达式} <%@ page language="java" import=

EL表达式和jsp标签

2 EL表达式 2.1 简介 EL表达式替代jsp表达式.因为开发jsp页面的时候遵守原则:在jsp页面中尽量少些甚至不写java代码. EL表达式作用:向浏览器输出域对象中的变量或表达式计算的结果 基本语法: ${变量或表达式}    代替<%=变量或表达式%> 2.2 EL获取不同类型的数据 普通字符串 普通的对象 数组或List集合 Map集合 2.3 EL执行表达式 算术表达式 比较表达式 逻辑表达式 判空表达式 2.4 EL的11个内置对象 pageContext pageScope

JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次都要先创建这些对象,然后再去使用它们,这样就显得十分繁琐了,为了方便使用者,Sun公司在开发JSP的时候,把一些对象设置为内置对象,开发者在JSP页面编程的时候不必声明这些对象就能直接使用,这就是JSP的内置对象. 那么JSP对象有哪些呢? JSP内置对象          对应的类型   备注 R

18、EL表达式、JSP标签、JSTL标签、自定义标签

EL表达式 jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<% %>. 以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码. 使用EL表达式替换掉jsp表达式 EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!! 语法: ${变量或表达式} EL语法 1 输出基本数据类型变量 从四个域获取 ${name} 指定域获取 ${pageScope.name} 域范围: pageScoep / requestScope / sessionSco

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例 EL表达式 1.获取域对象中的值 2.EL表达式支持运算 ${ num1 + num2 } EL获取常用的WEB对象 1.pageScope 获取page域对象的值 2.requestScope 获取request域对象的值 3.sessionScope 获取session域对象的值 4.applicationScope 获取application域对象的值 * 例子:向某个域中来存入值 req

在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>. 其次,将EL表达式作为fmt标签属性的value值.再增加pattern参数,为日期制定需要格式化的格式,如yyyy-MM-dd.例如: <fmt:formatDate value="${object.dateproperty}&quo

Javaweb学习笔记——EL表达式

一.前言 EL表达式是什么? 简而言之,可以这样理解,EL表达式全名为:Exprexxsion Language,原先是JSTL 1.0为了方便存取数据而定义的语言,到了JSTL 2.0便正式成为标准之一.EL表达式的引入可以简化jsp页面中的java代码,方便存取数据等优点. EL表达式的作用有: 1.获取数据 EL表达式替换jsp页面中的java代码,可以从各种类型的WEB域对象中检索java对象,获取数据, 2.执行运算 EL表达式支持逻辑运算和算术运算,可在jsp页面进行简单的运算功能,

D09 Sping Boot 入门 Sping框架--Java Web之El表达式和JSTL标签

El表达式 1.什么是EL表达式,有什么作用 Ⅰ.EL表达式全称Expression Language.表达式语言. Ⅱ.EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据输出. Ⅲ.EL表达式比jsp表达式脚本简洁. 比较 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>a.j

[Java] JSP笔记 - EL、JSTL 常用标签

一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法.它是一种简单的语言,基于可用的命名空间(PageContext 属性).嵌套属性和对集合.操作符(算术型.关系型和逻辑型)的访问符.映射到 Java 类中静态方法的可扩展函数以及一组隐式对象. 三.使用 EL 语言前的配置