杂谈 Taglib、EL、OGNL

简介:

本篇主要是自己对 JavaWeb中 EL、OGNL、Taglib 个人理解。

   因为以上内容都是在 JSP 的基础下产生的概念, 首先得说说我眼中的 JSP。

   她自由的、奔放的,就像辽阔的大海,跨越任何服务器屏障、运行在各种平台。

   她能容纳下各种形式的代码和标签库,Java 原生代码、JSTL 表达式、Struts Taglib 、JSF Taglib 、Webwork Taglib ....任何人自定义的各种标签。

   Web 视图层的基本思想已被 JSP 阐述的淋漓尽致,但 IT 领域人们不喜欢阳关积极的老人。

   眼下琳琅满目的模版引擎以其灵活的表现形式和简洁的书写方式大有取缔 JSP 的势头。

1. Taglib(tag library) 标签库

   JSP 中原生的 java 代码,总是给人一种杂乱的感觉,与整个 JSP 页面不搭调。

   而且增加维护难度和成本、前端 JSP 美工也必须是程序员、增加程序开发成本。

   Taglib 是在这种前提下孕育而生,在很久以前已经被很多 Javaweb mvc 框架采用和扩展,发扬广大。

   小巧活泼的 Taglib 将杂乱的原生 java 代码移出了 JSP 的世界,还原了 JSP 原本整洁干净的样子。

   未引入 taglib 实例代码:

复制代码
<% @page import="cn.javass.user.UserModel" %>  
<% UserModel user = (UserModel)request.getAttribute("user"); %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><%=user.getName()%></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><%=user.getAge()%></td>  
    </tr>  
</table>  
复制代码

   引入 struts <c:/>标签和 EL 表达式 实例代码:

复制代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
<table border="1">  
    <tr>  
        <td colspan="2">用户信息</td>  
    </tr>  
    <tr>  
        <td>姓名</td>  
        <td><c:out value="${user.name}"/></td>  
    </tr>  
    <tr>  
        <td>年龄</td>  
        <td><c:out value="${user.age}"/></td>  
    </tr>  
</table>  
复制代码

   可能是业务逻辑不够复杂,所以你可能没有满脸络腮胡子的大叔,变为阳光活泼的小鲜肉的感觉,没关系,听我慢慢道来。

   下面是比较主流的一些 TagLib,和具体的参考资料:

   由 apache 开发维护的 JSTL(JSP Standard Tag Library),具体参考资料: http://www.runoob.com/jsp/jsp-jstl.html

   Struts2 Taglib : http://www.blogjava.net/hwpok/archive/2008/10/12/233853.html

   webwork Tablib:http://wenku.baidu.com/link?url=EjR9GEfZUMw9nW3Asq6OUSTmXAuKf018QDV7

   当然你也可以自定义扩展 Taglib:http://www.cnblogs.com/edwardlauxh/category/277227.html

2. EL(Expression Language) 表达式

   EL 设计灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。

   EL 依次从Web Page、Request、Session、Application 范围查找值,同样也能从定义的隐式对象 pageScope、requestScope、sessionScope和applicationScope 中获取数据。

   EL 既不是编程语言、也不是脚本语言、最佳搭档为 JSTL,能使用简单方便的符号来表达和操作复杂的行为。

   不引入 EL 和 JSTL,Java 原生代码 HTML 中渲染数据代码示例:

复制代码
<% 
      for (User user : UserList) { 
%>
        <h5>遍历的当前用户名称:<%=user.getName()%></h5>
        <h5>遍历的当前用户组织机构:<%=user.getOrg()%></h5>
<% 
       } 
%>
复制代码

  引入 EL 和 JSTL代码实例:

<c:forEach var="user" items="${userList}" >
    <h5>遍历的当前用户名称:<c:out value="${user.name}"/></h5>
    <h5>遍历的当前用户组织机构:<c:out value="${user.org}"/></h5>
</c:forEach>

   ${userList} 为 EL 取值,<c:forEach> <c:out> 为 JSTL 循环和输出标签,引入 EL 和 JSTL 后的代码是不是简洁、易懂?

   至于 EL 和 JSTL 的使用方式和书写规则,参考资料:

   EL :https://my.oschina.net/passer007/blog/610380

   JSTL: http://www.runoob.com/jsp/jsp-jstl.html

   这些东西罗列出来没意义,遇到具体项目和具体业务规则时,进行搜索吧。

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

   OGNL 是 EL 的升级版,最佳搭档一般为 struts <s:/> 和 webwork <ww:/> 等框架标签库配合使用。

   OGNL 提供了很多高级而必须的特性,例如强大的类型转换功能,静态或实例方法的执行,跨集合投影,以及动态 lambda 表达式定义等。

   OGNL 的计算围绕着 OGNL 上下文进行,可以在属性驱动的框架如 struts、webwork..值栈中增、删、改、查数据。   

   引入 OGNL 和 struts <s:/> 标签库页面渲染代码实例:

<s:iterator var="user" value="${userList}" id="user" status="status">
    <h5>当前对象索引:<s:property value="#status.index"/></h5>
    <h5>遍历的当前用户名称:<s:property value="user.name"/></h5>
    <h5>遍历的当前用户组织机构:<s:property value="user.org"/></h5>
</s:iterator> 

   #status.index 为 OGNL 取值,<s:property/> <s:iterator/> struts 标签库输出和遍历便签。

   上述例子的举基本为简单常规的样例,但实际业务逻辑总是伴随着变化和复杂规则,OGNl 基本都能满足你的要求。

   OGNL 具体的使用方式和书写规则也不进行罗列了,比较好的参考资料:

本文转自Orson博客园博客,原文链接:http://www.cnblogs.com/java-class/p/5731606.html,如需转载请自行联系原作者

相关文章
|
2月前
|
机器学习/深度学习 算法 前端开发
深入浅出剖析EL表达式和JSTL
深入浅出剖析EL表达式和JSTL
27 0
深入浅出剖析EL表达式和JSTL
|
10月前
|
Java
JavaWeb|认识表达式语言(EL)
JavaWeb|认识表达式语言(EL)
75 0
|
存储 Java 编译器
JSP表达式语言(EL)
JSP表达式语言(EL)
74 0
|
前端开发 Java
JSP简介&&EL表达式&& JSTL
JSP简介&&EL表达式&& JSTL
JSP简介&&EL表达式&& JSTL
【EL与JSTL表达式】学习JSP之后,这是你不得不知道的技术
之前我们已经完成了对JSP的学习,但是还有一些其他的东西我们必须得知道,今天我们来学习EL与JSTL表达式。它们将简化JSP的书写并且使得JSP更加强大。但是如果你对JSP一无所知的话建议你先去看一下之前入门JSP的文章。
【EL与JSTL表达式】学习JSP之后,这是你不得不知道的技术
|
XML SQL JavaScript
JavaWeb - JSTL、EL 表达式
JavaWeb - JSTL、EL 表达式
165 0
JavaWeb - JSTL、EL 表达式
|
设计模式 前端开发 Java
EL(Express Lanuage)表达式 与 JSTL(JSP Standard Tag Library),JSP标准标签库
EL(Express Lanuage)表达式 与 JSTL(JSP Standard Tag Library),JSP标准标签库
116 0
EL(Express Lanuage)表达式 与 JSTL(JSP Standard Tag Library),JSP标准标签库
JSP+EL+JSTL学习小结
PageContext:pageConext 存放的数据仅在当前页面有效。开发时使用较少。当前页面存放数据用表单标签中的 ,且该存值方式用户看不到。 ServletRequest: request 存放的数据在一次请求(转发:可以传数据)内有效。
1031 0
|
Web App开发 Java
day11_JSP+EL+JSTL学习笔记
一、jsp概述     JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。     JSP实际上就是Servlet。       JSP这门技术的最大的特点在于:写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
1266 0
【JSP EL】el表达式判断是否为null
后台程序放入Model中,从前台el表达式取出来非常方便,但是如果需要处理   当数据为null的时候,怎么办,不为null的时候,怎么办;这个怎么处理呢?              机构...
1790 0