zoukankan      html  css  js  c++  java
  • 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应用在各应用服务器之间的移...
  • 相关阅读:
    [opentwebst]一个简单的登陆脚本
    opentwebst一个ie自动化操作测试软件-功能强大
    给X9DRL-iF双路服务器主板刷BIOS
    在ubuntu16下面通过kvm+lvm安装ubuntu16的虚拟机
    ubuntu16安装KVM
    PowerShell全自动分配CPU
    在ubuntu16编译安装nginx-1.10.2(full)完全自带组件
    将博客搬至CSDN
    乌邦图ubuntu配置iptables的NAT上网
    LVM增大和减小ext4、xfs分区
  • 原文地址:https://www.cnblogs.com/flyfishing1991/p/9589433.html
Copyright © 2011-2022 走看看