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

requestScope

sessionScope

applicationScope

param

paramValues

header

headerValues

cookie

initParam

3 Jsp标签

3.1 简介

EL表达式可以替换jsp表达式,但是EL表达式局限: 不能条件判断,不能赋值,不能迭代。jsp标签替代jsp脚本,完成条件判断,赋值,迭代等等功能。

3.2 Jsp标签分类

1)jsp内置标签(动作标签): 使用的时候不需要导入标签库

2)jstl标签(标准标签): 使用的时候都需要导入标签库

3)自定义标签:使用的时候都需要导入标签库

3.3 动作标签

<jsp:forward/>   转发标签

<jsp:param/>    参数标签

<jsp:include/>    包含标签

注意:

包含标签的原理是包含与被包含的页面单独翻译成不同的java文件,然后再运行时合并在一起。 (先翻译再合并,动态包含)

静态包含 vs  动态包含

静态包含: 先合并再翻译。不能携带参数

动态包含: 先翻译再合并。携带参数

3.4 JSTL标签

jstl标签,java standard tag libarary java标准标签库。

特点: 在使用jstl标签时需要导入标签库

jstl标签库分类:

核心标签库(重要)(c)

国际化标签库(fmt)

EL函数库(fn)

SQL标签库(sql)

XML标签库(x)

码农翻身

3.5 使用JSTL标签

1)导入jstl的支持jar包,在java5.0之后jstl已经是属于5.0的支持包里面。

2)使用jsp页面,需要在jsp的顶部使用taglib指令导入需要的标签库

3)使用标签:

<c:set/>

3.6 核心标签库的标签

保存数据:

<c:set></c:set>

var: 数据的名称  value: 保存的数据值  scope: 保存到哪个域。

获取数据:

<c:out value=""></c:out>

value: 代表获取域中的某个名称内容。如果数据在域中,必须使用EL语法去获取

default: 默认值。当前需要获取的内容为null,那么使用默认值代替

escapeXml: 默认情况下为true,out标签会把输入的内容进行转义。如果不需要转义,则为false既可!

单条件判断

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

多条件判断

<c:choose></c:choose>

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

<c:otherwise></c:otherwise>

用于迭代(循环)

<c:forEach></c:forEach>

begin: 从哪个元素开始遍历,从0开始

end: 到哪个元素位置

step: 增加步长。默认step为 1

items: 需要遍历的数据。(数组|List集合|Map集合) 如果是获取域数据,那么使用EL表达式获取

var: 每个元素名称

varStatus: 当前状态对象。该对象封装当前元素状态信息。  例如 count属性: 表示当前遍历的是哪个元素,从1开始

注意: forEach标签遍历Map集合时,把每个Map的对象使用Entry封装,

Entry封装键对象和值对象,通过getKey()获取键对象,通过getValue()获取值对象

<c:forTokens items="" delims=""></c:forTokens>

items: 需要遍历的字符串

delims: 指定分割符号

var: 每个内容的名称

重定向

<c:redirect></c:redirect>

3.7 自定义标签

当现有的标签无法满足需求的时候,就需要开发者自行开发标签。

需求: 获取客户端的IP地址

实现SimpleTag接口/继承SimpleTagSupport类,重写doTag()方法。

编写标签库描述符(tld)文件,在tld文件中对自定义标签进行描述,并放置在WEB-INF/目录下。

注意

<body-content>:指定标签体的类型。可能取值有 4 种:

JSP:表示支持jsp标准表达式取值,即<%= %>。只能在传统标签用,简单标签不支持!

empty:没有标签体

scriptless:标签体可以包含 el 表达式和 JSP 动作元素,但不能包含 JSP 的脚本元素

tagdependent:表示标签体交由标签本身去解析处理。若指定 tagdependent,在标签体中的所有代码都会原封不动的交给标签处理器,而不是将执行结果传递给标签处理器

完成以上操作,即可在JSP页面中导入和使用自定义标签。

3.8 自定义标签的执行过程

访问:http://localhost:8080/jsp/tag.jsp

前提: tomcat启动的时候,会读取day12项目下的WEB-INF的文件。包括web.xml和tld文件。

1)翻译成java文件-》 编译成class文件-> 构造方法- 》 调用_jspService()方法

2)在内存tld文件中,查询是否存在一个uri名称为http://www.td.com的tld文件

3)得到对应的tld文件内容。

4)读到<td:showIp>内容时,截取showIp名称(就是标签),到tld文件中查询是否存在name为showIp的tag标签。

5)取出<tag>标签的内容<tag-class>字符串: com.xxt.tag.ShowIpTag

可以重写的方法

setJspContext方法

用于把JSP页面的pageContext对象传递给标签处理器对象

setParent方法

用于把父标签处理器对象传递给当前标签处理器对象

getParent方法

用于获得当前标签的父标签处理器对象

setJspBody方法

用于把代表标签体的JspFragment对象(即标签体内容)传递给标签处理器对象

doTag方法

用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容。

4 JavaBean规范

4.1 简介

JavaBean就是一个普通的java类,必须遵守以下规则的java类才能称为javabean。

1)必须有一个无参的构造方法

2)把类的属性私有化。   (不能直接访问属性)  private

3)必须提供公开的getter和setter方法 。 (通过getter和setter操作属性)

场景:

1)项目的实体对象符合javabean的规范

2)EL表达式,访问对象的属性。${student.name}  原理:调用 getName();

3)自定义标签处理,给标签属性赋值。  setNum(int num)

4)  JSP页面中可以使用javabean

JavaBean作用: 用于封装业务的数据

操作对象的属性:

通过getter或setter方法

2)编程实战:

MVC开发模式:

M(model): javabean: 封装业务数据

V(view): jsp: 显示数据(jstl+el表达式)

C(controller): servlet: 接收参数数据,调用业务逻辑,跳转视图

三层开发结构

dao层(数据持久化层): 负责数据访问,实体对象的增删改查

service层(事务层): 负责处理系统的业务逻辑

web层: servlet+jsp完成用户交互

原文地址:https://www.cnblogs.com/lldsgj/p/10801269.html

时间: 2024-10-28 22:49:26

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标签

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

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

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

EL表达式、 jstl标签

EL表达式(Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化. 1.语法结构 ${expression} 2.[ ]与.运算符 EL 提供"."和"[ ]"两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用"[ ]".例如

Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成service方法中out.write(表达式或变量) <%!java代码%>:被翻译成servlet的全局的内容,方法,全局变量 2.jsp的运行原理 jsp在运行时翻译成servlet index.jsp------>work/index_jsp.java----->work/inde