EL表达式与JSTL标签库详解

前言

        本章主要学习EL表达式与JSTL标签库,用于简化JSP数据操作。收录JavaWeb基础系列,该系列主要学习JavaWeb开发原生框架、Servlet、JSP、request请求对象、response响应对象、Session会话对象、Filter过滤器、EL表达式、JSTL标签库、三层开发模型等知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 

目标

一、EL表达式

1. 概念

2. 语法

3. 示例

4. EL表达式查找顺序

5. EL变量

二、JSTL标签库

1. 概念

2. JSTL标签库

3. 核心标签(Core)

4. 用法 

4.1 首先引入核心标签库

4.2 使用标签 


内容

一、EL表达式

1. 概念

        EL表达式‌是一种在JSP页面中获取数据的表达式语言,用于简化JSP页面的代码编写。主要目的是替代JSP页面中的脚本和表达式,从而减少代码的复杂性和维护难度。

2. 语法

        EL表达式的语法格式为:${表达式内容}。       

        EL表达式是以 ${ 起始,以 } 结束。

        括号中填写指定域对象中存储的key值。

3. 示例

//获取session域中name参数值
${sessionScope.name};

//获取session域中user对象的name属性值
${sessionScope.user.name};


// Java脚本读取数据:
<% User user = (user)seesion.getAttrbute(“user”);
String sex = user.getSex(); %>

//相较之下,EL表达式比Java脚本方便、简洁

4. EL表达式查找顺序

        EL表达式可以直接使用${key}查找域对象中的value值,省去域对象。    

        如果使用类似于${name}的时候,没有指定在哪一个域对象范围查找name,那么它会以:

        1. Page

        2. Request

        3. Session

        4. Application

        根据作用域大小,从小到大依次查找。假若全部的范围都没找到时,就回传null,EL优化,页面上显示空白,不会直接打印null。

5. EL变量

域对象(jstl名称)

EL中的名称

描述

Page

PageScope

JSP页面本身,代表page域中可以保存K V键值对

的对象

Request

RequestScope

请求,代表request域中可以保存K V对象

Session

SessionScope

请求,代表session域中可以保存K V对象

Application

ApplicationScope

请求,代表Appliction域中可以村吃K V对象

cookie

表示一个保存了所有cookie的K V对象

Param

表示一个保存了所有请求参数的K V对象

ParamValues

表示一个保存了所有请求参数的K V对象,它对于某个请求参数,返回的是String[]

pageContext

对应JSP页面中的pageContext对象

取的是pageContext对象。

header

表示一个保存了所有http请求头字段的K V对象,

例:header[“Accept-Encoding”]

headerValues

表示一个保存了所有http请求头字段的K V对象,

对于某个请求参数,返回的是String[]数组。

InitParam

表示一个保存了所有web应用初始化参数的K V

对象

 e

  1. pageContext对象:获取页面中的pageContext对象
  2. pageScope对象:从page域中查找数据
  3. requestScope对象:从request域中获取数据
  4. 未指定获取范围时,默认从page开始找
  5. sessionScope对象,从session域中获取数据
  6. applicationScope对象:从application中获取数据
  7. param对象:获得用于保存请求参数map,并从map中获取数据

二、JSTL标签库

1. 概念

        JSTL‌是Java EE提供的一套标签库,用于简化JSP页面的开发。JSTL封装了常见的Java功能,如迭代、条件判断、XML操作、国际化等,减少了JSP页面中Java脚本的使用,使得页面更加清晰。

        JSTL支持结构化,比如迭代、条件判断、XML文档操作、国际化标签、SQL标签、自定义标签等。

2. JSTL标签库

        在JSTL中分为五个标签库,分别为:

核心标签

格式化标签

SQL标签

XML标签

JSTL函数

        使用不同的标签时需要导入不同的jar包、引入不同的库。 

3. 核心标签(Core)

        核心标签库中包含多种标签,这些标签封装了Java功能代码,功能上分为4类:

表达式控制标签: out、set、remove 、catch

流程控制标签: if、when、otherwise

循环标签:forEach、forTokens

URL操作标签:import、url、redirect

标签

描述

用于保存数据

用于显示数据  <%= ….%>

用于删除数据

处理产生错误的异常状况,并将错误信息存储

控制语句,与之前编程中的用法一样

用来作为的父标签

的子字标签,用来判断是否成立

的子字标签,接在标签之后,当判断为false的

时候执行

基础迭代标签,接受多种集合类型

检索一个绝对或相对的URL,然后将其内容展示给页面

根据指定的分隔符来分隔内容并迭代输出

用来给重定向的页面传递参数

重定向到一个新的URL

使用  可选的查询参数来创造一个URL

4. 用法 

4.1 首先引入核心标签库
<%@ taglib  prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
4.2 使用标签 
// 用来显示数据(字符串、表达式)的内容或结果
// Java脚本方式: <%out.println(“hello”)%> 或 <%=表达式%>
// JSTL标签方式:


//  用来从指定范围内移除指定变量


// 用来处理JSP页面中产生的异常,并存储异常信息

	// 可能产生异常的代码


//如果抛出异常,异常信息保存在变量err中。
4.2.1 标签

        标签用来遍历域对象中的数据,标签中的属性:

属性

描述

是否必要

默认值

items

要被循环的数据

begin

开始元素(0=第一个元素)

0

end

最后一个元素(0=第一个元素)

step

每一次迭代的步长

1

var

当前条目的变量名称( i )

VarStatus

代表循环状态的变量名称

// Java脚本遍历
<% int num[]={1,2,3,4,5,6,7,8,9};
    session.setAttribute("num", num);
	forEach(num : n){}
%>
	
//c:forEach标签遍历

	
${r} //配合EL表达式读取
${i} ${name} <% List a = new ArrayList(); a.add("张三"); a.add("李逵"); a.add("张飞"); a.add("大草原"); a.add("自行车"); request.setAttribute("a", a); %> // 不指定begin和end的迭代 // 指定begin和end的迭代:

4.2.2 标签

        表示URL标签,用来把其他静态或动态文件引入到JSP页面。

        可以引用其他web应用的资源文件和网络上的资源


	

import实例

引用绝对路径的实例

相对路径引用的实例,引用本应用中的文件

使用字符串输出、相对路径引用的实例,并保存在session范围内

4.2.3 标签

        用来引入同一个web应用下的资源文件。

        可以引入web应用中的资源。

4.2.4 标签

        用来实现请求重定向。

        例如,对用户名密码进行验证,不成功就重定向到登录页面,或实现web应用中不同模块的链接。

        语法:

        或:




	007
	007
4.2.5 标签

        用于生成一个String类型的URL

        语法:



使用url标签生成一个动态的url,并保存在session中

MI首页
4.2.6 标签

用来判断。

//  
	
// 比如有一个对象A   name=赵五


	

4.2.7 标签

用于设置参数。

	
	

李四
	


  • 从Bean中得到的值:${sessionScope.name1}
  • 从Bean中得到的值:${sessionScope.name2}
  • 你可能感兴趣的:(JavaWeb基础,java)