频道栏目
首页 > 资讯 > Java > 正文

Java之旅(三)--- JSTL和EL表达式

14-10-30        来源:[db:作者]  
收藏   我要投稿


先给大家看一段JSP的代码,看看有什么感受?

<%

       List usELList = pageModel.getList();
       for (ItELator itEL=usELList.itELator(); itEL.hasNext();) {
              UsEL usEL = itEL.next();
%>

       
              
       
       
              <%=usEL.getUsELId() %>
       
       

              <%=usEL.getUsELName() %>
          
       
              <%=usEL.getContactTel()%>
       
       
              <%=usEL.getEmail() %>
       
       
             <%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(usEL.getCreateDate()) %>
       

<%
     }
 %>


这就是掺杂着Java代码的JSP页面,它的不足之处显而易见:

(1)jsp维护难度增加;
(2)出错提示不明确,不容易调试;
(3)分工不明确,美工人员还需要了解Java代码;
上述三点,最终会增加程序的开发成本;


解决上面的问题就出现了JSTL和EL表达式,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,降低代码工作量,界面更加简洁,便于维护,后台java人员和前端的美工人员可以分工合作,从而可提高团队开发的效率。

那么究竟什么是JSTL呢?什么是EL表达式呢?为什么每次说到JSTL都要说到EL表达式呢?它们两者究竟是什么关系呢?又有什么区别呢?且看下面慢慢说来~


一、什么是JSTL?


JSTL是一个不断完善的开放源代码的JSP标签库。JSTL1.0由四个定制标记库(core、format、xml和 sql)和一对通用标记库验证器组成。

(1)core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL的标记;

(2)format标记库定义了用来格式化数据(尤其是数字和日期)的操作;

(3)xml库包含一些标记,这些标记用来操作通过XML表示的数据;

(4)而 sql库定义了用来查询关系数据库的操作。


二、什么是EL表达式?


EL表达式主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL标记一起作用,能用简单而又方便的符号来表示复杂的行为。

EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中。例如: ${PageScope.UserName}。再次对此不再赘述,网上有很多极为详细的使用教程。


三、EL表达式变量的作用域?


EL隐含对象:pageScope,requestScope,sessionScope,applicationScope。作用域范围依次从小到大。


EL名称/ JSTL名称

有效范围

PageScope / Page

用户请求此页面过程

RequestScope / Request

用户的整个请求过程

SessionScope / Session

用户的整个会话期

ApplicationScope / Application

WEB应用程序执行期间

当${username}不写明变量作用域时,默认按上述顺序查找变量,找到就返回,不再继续找;但是如果全部的范围都没找到,则返回null。如果写明作用域,则搜索过程如下:


实例

说明

${ PageScope .UserName}

取得Page范围内的

UserName

${ RequestScope.UserName}

取得Request范围内的UserName

${SessionScope.UserName}

取得Session范围内的UserName

${ ApplicationScope.UserName}

取得Application范围内的UserName

四、JSTL和EL表达式有何区别?


(1)功能:EL是用来显示数据的,功能跟<%=表达式%>一样,但是它的功能有限,如:针对于空给出默认的非空字符串输出,迭代循环数组元素等是无法实现的。而JSTL则弥补了上述问题,它常用来实现网页逻辑判断和迭代显示,功能跟<%程序代码%>一样。所以,一般情况下,我们都会选择JSTL配合EL表达式一起使用,这样基本可以实现JSP中不出现Java代码。


(2)配置:JSTL和EL表达式都是自定义标签,web server容器会把jsp 解析成servlet,在解析的过程中调用解析器,这个解析器集合就包含EL、JSTL等解析器。

但是EL是servlet标准,容器中都会集成所以我们在使用EL表达式时不需要引用任何东西;而JSTL则需要引入它的包方可使用。引入方法如下:使用taglib指令---用来指示这个JSP页面所使用的标签库<%@ taglib uri=" " prefix=" " %>


(3)空值处理:当搜索全部范围后仍没有数据时,会返回NULL,但是EL表达式对此做出了优化,页面上显示空白,而不是打印输出NULL。而JSTL则是优化的更为彻底,当返回NULL时,通过JSTL可以返回“无”。

现在,对JSTL和EL表达式有了基本了解了,其实说白了就是一句话:两者结合,彻底消除JSP页面的Java代码!


相关TAG标签
上一篇:JavaScript——BOM(浏览器对象模型),时间间隔和暂停
下一篇:Android恶意代码编年史
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站