程序员人生 网站导航

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

栏目:互联网时间:2014-11-03 08:58:27


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

<% List<UsEL> usELList = pageModel.getList(); for (ItELator<UsEL> itEL=usELList.itELator(); itEL.hasNext();) { UsEL usEL = itEL.next(); %> <tr> <td class="rd8"> <input type="checkbox" name="selectFlag" class="checkbox1" value="<%=usEL.getUsELId() %>"> </td> <td class="rd8"> <%=usEL.getUsELId() %> </td> <td class="rd8"> <%=usEL.getUsELName() %> </td> <td class="rd8"> <%=usEL.getContactTel()%> </td> <td class="rd8"> <%=usEL.getEmail() %> </td> <td class="rd8"> <%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(usEL.getCreateDate()) %> </td> </tr> <% } %>

       这就是搀杂着Java代码的JSP页面,它的不足的地方不言而喻:

       1jsp保护难度增加;
        2)出错提示不明确,不容易调试
;
        3)分工不明确,美工人员还需要了解Java代码;

       上述3点,终究会增加程序的开发本钱;


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

       那末究竟甚么是JSTL呢?甚么是EL表达式呢?为何每次说到JSTL都要说到EL表达式呢?它们二者究竟是甚么关系呢?又有甚么区分呢?且看下面渐渐说来~


1、甚么是JSTL


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

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

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

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

        (4) sql库定义了用来查询关系http://www.wfuyu.com/db/的操作。


2、甚么是EL表达式?


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

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


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


       EL隐含对象:pageScoperequestScopesessionScopeapplicationScope。作用域范围顺次从小到大。


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

 

4、JSTLEL表达式有何区分?


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


2)配置:JSTLEL表达式都是自定义标签,web server容器会把jsp 解析成servlet,在解析的进程中调用解析器,这个解析器集合就包括ELJSTL等解析器。

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


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

 

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


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐