ECMAScript杂谈 Taglib、EL、OGNL

   本篇主要是好对
JavaWeb中 EL、OGNL、Taglib 个人掌握。

   因为以上内容都是于 JSP
的基础下发出的定义, 首先得说说自眼中之 JSP。

 
 她随便的、奔放的,就如辽阔的汪洋大海,跨越任何服务器屏障、运行在各种平台。

   她会盛下各种样式的代码和标签库,Java
原生代码、JSTL 表达式、Struts Taglib 、JSF Taglib 、Webwork
Taglib ….任何人起定义的各种标签。

   Web 视图层的中坚思想都受 JSP
阐述的淋漓尽致,但 IT 领域人们不喜欢阳关积极的老前辈。

 
 时灿烂的模板引擎以那灵活的表现形式和简单的开方式大发取缔 JSP
的可行性。

ECMAScript 1

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
基本都能够满足你的求。

  ECMAScript OGNL
具体的施用办法以及开规则也未开展陈列了,比较好的参考资料:

 
 Struts2中的OGNL详解: http://blog.csdn.net/tjcyjd/article/details/6850203

   Webwork 学习之路【02】前端OGNL试练
:http://www.cnblogs.com/java-class/p/5016578.html