JSTL、EL、ONGL、Struts标签的区别
### JSTL、EL、ONGNL、Struts标签的区别与使用 #### 一、JSTL (JavaServer Pages Standard Tag Library) **定义**: JSTL 是一个由一系列标准标签组成的集合,这些标签可以帮助开发者简化 JavaServer Pages (JSP) 页面的开发工作。JSTL 的设计目标是为了提供一种更加简洁、易于维护的方式来处理常见的 Web 开发任务。 **运行环境**: JSTL 需要在支持 JSP 1.2 和 Servlet 2.3 规范的容器上运行,例如 Tomcat 4.x 版本。在 JSP 2.0 中,JSTL 成为了标准的一部分被直接支持。 **引入**: 使用 JSTL 需要引入相应的 jar 包,即 `jstl.jar` 和 `standard.jar`。 **使用**: 引入 JSTL 标记库的方式如下: ```jsp <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ``` **与 EL 的关系**: JSTL 经常与 EL(Expression Language)搭配使用,其中 JSTL 负责逻辑处理和控制流操作,而 EL 则负责数据访问。虽然 EL 可以直接获取作用域内的对象变量,但通常情况下,JSTL 和 EL 结合使用可以更高效地管理数据和逻辑。 #### 二、EL (Expression Language) **定义**: EL 全称为 Expression Language,最初是为 JSTL 1.0 设计的一种语言,目的是简化对数据的存取操作。自 JSP 2.0 和 Servlet 2.4 开始,EL 已经成为标准的一部分。 **表达方式**: EL 表达式的书写方式如下: ```jsp ${expression} ``` 其中 `expression` 可以是简单的变量名或者更复杂的表达式。 **EL 的作用**: EL 主要用于从作用域中获取数据并进行简单运算。EL 可以通过以下几种方式访问对象: - `${bean.name}`: 直接访问对象的属性。 - `${bean['name']}`: 通过索引的方式访问对象的属性。 **EL 与 JSTL 的关系**: EL 通常作为 JSTL 的一部分被使用,即 JSP 将 EL 表达式嵌入到 JSTL 标签中以实现数据的动态展示。 #### 三、ONGNL (Object-Graph Navigation Language) **定义**: OGNL 是一种强大的表达式语言,能够通过简单的表达式访问 Java 对象的属性。它最初是为 Struts 框架设计的,但现在已经成为一个独立的开源项目。 **表达方式**: - `%{#name}`: 从值栈的 map 中取值。 - `%{name}`: 从值栈的对象栈中取值。 - `%{#request.name}`: 从 request 域中取值。 **构建数据**: - 构建 Map: `<s:iterator var="map" value="#{'key1':'value1','key2':'value2'}"/>` - 构建 List: `<s:iterator var="list" value="#{'one','two','three'}">` **符号解释**: - `#`: 用于访问非根对象属性;用于集合的过滤和投影;构造 Map。 - `%`: 当标志的属性为字符串类型时,计算 OGNL 表达式的值。 - `$`: 在国际化资源文件和 Struts2 配置文件中引用 OGNL 表达式。 **与 EL 的区别**: - **用法**: OGNL 通常与 Struts2 标签一起使用,不能单独在 Struts 页面中使用;而 EL 可以直接在 JSP 页面中使用。 - **取值**: OGNL 更适合于复杂的对象图导航,而 EL 更适用于简单的数据访问。 **与 JSTL 的区别**: OGNL 是 Struts2 的一部分,主要用于对象图导航,而 JSTL 是一组标准标签库,用于控制流和数据操作。 #### 四、Struts 标签 **定义**: Struts 标签是 Struts 框架提供的用于简化 JSP 页面开发的一系列标签。 **引入**: 使用 Struts 标签的方式如下: ```jsp <%@ taglib uri="/struts-tags" prefix="s" %> ``` **使用示例**: - **JSTL 中使用 Struts2 标签**: ```jsp <c:forEach var="ee" items="${requestScope.serviceList}"> <s:property value="#attr.ee.id"/> </c:forEach> ``` - **JSTL 中取值**: ```jsp <c:set var="ctime" value="${el.createtime}" scope="request"/> <s:property value="#request.ctime"/> ``` - **Struts2 标签中使用 JSTL**: ```jsp <s:iterator value="#request.serviceList" id="bs"> <c:out value="${bs.keyid}"/> </s:iterator> ``` ### 总结 JSTL、EL、ONGNL 和 Struts 标签各有特点和应用场景: - **JSTL**: 用于简化 JSP 页面的开发工作,提供了一系列标准标签来处理常见的 Web 开发任务。 - **EL**: 用于简化数据访问操作,是 JSP 2.0 和 Servlet 2.4 的一部分。 - **ONGNL**: 是一种强大的表达式语言,能够访问复杂的 Java 对象结构,并且通常与 Struts2 框架一起使用。 - **Struts 标签**: 提供了一组标签来简化 Struts 应用程序的开发过程,尤其是在与 Struts2 框架结合使用时更为强大。 这些技术之间可以相互配合使用,以达到更好的效果。例如,在 JSP 页面中,可以使用 JSTL 来控制流程和数据处理,同时利用 EL 或 OGNL 进行数据的访问和展示。在 Struts2 应用中,则可以充分利用 Struts 标签来处理复杂的业务逻辑和数据展示需求。












- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Python爬虫】从请求到数据存储全流程指南:涵盖网络请求、HTML解析与数据处理基础教程
- 由百度文心大模型驱动的 AirSim 无人机系统
- Selenium测试版浏览器和驱动
- 基于OpenCV的工业机器视觉软件开发.pdf
- 基于百度文心大模型驱动airsim无人机
- Python在图书情报学的应用与扩散研究.pdf
- 基于ELF文件恢复的Linux内存取证技术研究.caj
- 基于MATLAB地下水溶质运移预测模型的构建.pdf### 文章总结
- 管理系统源码-Python编程-基于SQLite的用户管理系统实现:涵盖CRUD功能的数据库操作入门教程
- 用于调用生成式大语言模型的 API 服务器系统
- 全国小区数据(包含字段:小区名、省份、城市、区域、地址、纬度(百度地图)、经度(百度地图)、纬度(GPS)、经度(GPS)、物业费
- 【大模型 NLP 算法付费干货大礼包】一站式拥有,学习科研工作全无忧!
- SQL Server 2000权威指南:从入门到精通
- 一项基于大模型的App隐私开关探测技术
- python 练习题 ,python 题目
- python 练习题,python 三角形题目


