Struts2标签、EL标签、JSTL标签和OGNL标签浅析

       在学习JavaEE时总是要写jsp页面,要用到各种标签进行数据的输出,没有仔细搞过就直接拿着用了,用了一个多月了还是迷迷糊糊的,抽时间进行一下简单的总结。

一、EL

       表达式语言(Expression Language,EL)是JSP2.0规范的一部分,在JSP页面中使用EL表达式可以简化对变量和对象的访问。

即时计算和延时计算

       即时计算是指页面在第一次调用时,JSP引擎就计算表达式并立即返回结果,只能用于模板数据中或者作为能够使用运行时表达式的JSP标签属性值。所有使用${}符号的表达式都是即时执行的,其语法格式为:${表达式}。

       延时计算只能在页面生命周期以后使用自己的机制计算表达式,主要用于JSF技术框架。其语法格式为:#{表达式}。

作用

       EL的功能是计算{}中的表达式,并将表达式中所引用的变量或对象属性自动转换为合适类型进行计算,最后结果转换为字符型并显示在页面中。

       EL可以访问EL内置对象,共有11个。常用的有:

              1、pageContext:通过它可以访问ServletContext、request、response和session等对象及属性;

              2、作用域内置对象:EL中允许直接访问通过setAttribute被绑定到不同范围(page、request、session和application)的属性       变量;访问方式:${requestScope.userName}、${response.Scope.userName}等;

二、JSTL

       JSTL全称为JavaServer Pages Standard Tag Library,是Sun公司制定的一套标签库规范,用来替代原来的scriptlet(代码总嵌入<% %>)进行JSP页面开发,显著提高了页面代码的可读性和可维护性。

       使用时需要在JSP页面中通过taglib指令引入核心标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

       如需使用其他标签库如国际化标签库、函数标签库,也需在JSP页面通过taglib命令引入,用法自行百度。

       各种标签不一一赘述了。

三、Struts2标签

       Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。

Struts2标签分类

       1、UI标签:主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签

       2、非UI标签:主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的)

       3、AJAX标签:AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

Struts2标签使用前的准备

         1、使用时需要在JSP页面中通过taglib指令引入 <%@ taglib prefix="s" uri="/struts-tags" %>

       2、在web.xml文件中声明要使用的标签,使用Struts2标签必然使用Struts2,因此在导入Struts2的时候IDE已经帮我们做了,即

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
 </filter>

Struts2标签的使用

         使用不再赘述,自行百度。

四、OGNL标签

       OGNL是Object Graph Navigation Language(对象图导航语言)的缩写,是一种功能强大的表达式语言(Expression Language,EL),通过简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。还有,它是开源的。

OGNL三要素

       把传入OGNL的API的3个参数,表达式、根对象和上下文称之为OGNL的三要素,OGNL的操作就是围绕着这3个参数而进行的。

       表达式是整个OGNL的核心,所有的OGNL操作都是通过解析表达式进行的,表达式制定了OGNL操作要做的内容。表达式是一个带有语法含义的字符串,规定操作的类型和内容。例如:经常使用的userName、user.userName等都是表达式。

       根对象可以理解为OGNL操作的对象,实际上是一个Java对象,如user.userName,user就是根对象,userName是表达式。

       上下文环境就是OGNL的操作运行的一个特定的数据环境,是一个Map结构(书上这么说,我也不太懂)。

OGNL表达式

       OGNL要结合struts标签来使用。由于比较灵活,也容易把人给弄晕,尤其是“%”、“#”、“$”这三个符号的使用。由于$广泛应用于EL中,这里重点写%和#符号的用法。

1、#符号的3种用途

       1)访问非根对象(Struts中值栈为根对象),如OGNL上下文和Action上下文,#相当于ActionContext.getContext();

       2)用于过滤和投影(projecting)集合

       3)构造Map,如: #{'foo1':'bar1', 'foo2':'bar2'}  

2、%符号的用途

       “%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。实际上就是让被理解为字符串的表达式,被真正当成OGNL来执行

<s:textfield label="书名" name="books.name" value="%{books.name}" />
如果没有%{},那么在文本框中显示的就是books.name,而不是从后台传过来的数据。

3、$符号的2种用途

      1)在国际化资源文件中,引用OGNL表达式;

      2)在Struts2配置文件中,引用OGNL表达式; 

结尾

以上就是一点总结,有一个非常详细的博客(链接),另外参考书籍是《JaveEE开发技术与实践教程》(聂艳明等著)、《Struts2开发从基础到应用》(马向林、赵林强著)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值