OGNL和EL表达式对比 Struts2标签和JSTL对比

本人发现Struts2中的标签和OGNL表达式,和Hibernate中用到的EL表达式和JSTL有一定的相似之处,对比学习会更加清晰,所以加以对比,以加深记忆。

OGNL(Object-Graph Navigation Language)对象图导航语言

OGNL表达式访问值栈:

1. 值栈(Value Stack),可以理解为一个 存储数据的Map,主要存储了当前action 的 实例。所以就可以使用OGNL访问值栈中的内容,也就是action的属性

2.OGNL表达式通过getter方法 来访问action中的属性,所以,action中的属性一定都要添加getter/setter方法。

例:< s: property value = "house . street . streetName"/>   //< s: property>用来在jsp页面中显示OGNL表达式的值,OGNL表达式写在value属性中。

3.  其实,值栈是被存储在request当中的,不过由于action中保存的值使用频率很高,所以OGNL提供了直接 访问值栈的方式,以简化编程。

OGNL表达式访问Stack Context:

action以外的数据都存储在Stack Context中,如request , session , application等。访问Stack Context中的 内容,需要加上“#” 符号

如:< s: property value = "#session.userName"/>     //访问session中 的userName

EL(Expression Language)表达式

EL表达式用来访问各种作用域中的数据,并显示在JSP页面中。

语法:${  EL表达式  }  //  "$" 和“{}” 缺一不可

要点

1. 使用EL表达式之前,必须将操作的对象保存到作用域中 。JSP提供了4种作用域: page ,request , session , application.

2. “作用域名称.” 方式即可实现 使用作用域 访问对象 读取属性值,如:

${ requestScope.news["title"]}  //读取新闻标题

3. 当使用EL表达式访问某个属性值是,应当指定 查找的范围 。如果程序不指定查找的范围,那么 系统会自动按照( page -》request -》 session -》 application)的 顺序进行查 找所以,以上例子也可以写成:${ news["title"]}

4. EL表达式访问对象的属性,有两种方法: “.”操作符和 "[ ]" 操作符

${news.title} 或者 ${ news["title"]}

5. EL表达式访问变量和 集合

${ userName} 访问变量   ${ list[0] } 访问集合

Struts2标签

使用Struts2标签之前需要在 JSP页面上 添加taglib指令:<%@ tagib uri = "/struts-tags"  profix = " s" %>

分类:

通用标签(Generic Tag)

数据标签(Data Tag)

<s:property> <s:url> <s:a> <s:param> <s:include> <s:debug> <s:date> <s:set>

控制标签 (Control Tag)

<s:if> <s:elseif> <s:else> <s:iterator>

UI标签(UI  Tag)

<s:form> <s:textfield> <s:textarea> <s:submit> <s:select> <s:doubleselect>

Ajax标签( Ajax  Tag)

<sx:datetimepicker>

使用datetimepicker日历控件,需要以下步骤:

1.在项目中引入struts2-dojo-plugin-2.1.8.jar 。

2. 导入<%@ tagib uri = "/struts2-dojo-tags"  profix = " sx" %> 。

3. 在<head> 中添加 <sx:head parseContent = "true"/>。

4. 添加标签 <sx:datetimepicker name = "timer" label= "发表时间"/>。

JSTL(Java Page Standard Tag Library, JSP标准标签库)

JSTL主要用来实现逻辑控制。完成以下两个步骤才可以再JSP中使用JSTL:

1.下载JATL所需的jstl,jar 和 standard.jar,并将其添加到项目中 。

2.在JSP页面中添加标签指令:<%@ tagib uri = "http://java.sun.com/jsp/jstl/core"  profix = " c" %>

<c:out/>  <c:set/>  <c:remove/>  <c:forEach/ >  <c:if/>  <c:url/ >  <c:param/>  <c:import/>等等

<fmt:format/>  <fmt:formatNumber/>格式化时间和日期

客观面试题--26.Struts2的标签和jstl的标签有什么优缺点?

jstl:JSTL(Java Page Standard Tag Library, JSP标准标签库)优点:1、 在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移...

原文地址:https://www.cnblogs.com/flyfishing1991/p/9589433.html

时间: 2024-10-11 23:04:39

OGNL和EL表达式对比 Struts2标签和JSTL对比的相关文章

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

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

Struts中的OGNL和EL表达式笔记

Struts中的OGNL和EL表达式笔记 OGNL(Object-Graph Navigation Language),可以方便的操作对象属性的表达式语言. 1.#符号的用途 一般有三种方式: 1.1.访问非根对象属性,如类似于#session.msg表达式,由于Struts2的值栈被当做根对象, 所以访问其他非根对象时,需要加#符号. #符号相当于ActionContext.getContext( ): #session.msg表达式相当于ActionContext.getContext().

在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(七)Cookie,EL表达式,标准标签库

Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件. Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源.客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内

笔记 - 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

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

OGNL表达式与EL表达式

一.OGNL表达式 a)什么是OGNL? OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言, 通过它简单一致的表达式语法.主要功能: Ø  可以存取对象的任意属性: Ø  调用对象的方法: Ø  遍历整个对象的结构图: Ø  实现字段类型转化等功能. 它使用相同的表达式去存取对象的属性.这样可以更好的取得数据. b)OGNL与Struts2 OGNL是独立的开源组件 Struts2对其进行了改造和封装,OGNL内部自己会维护一个OGN