Java之旅(三)--- JSTL和EL表情



先给大家看一段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页面,它的不足之处显而易见:

(1)jsp维护难度添加;

(2)出错提示不明白,不easy调试;

(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代码。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-11 06:53:50

Java之旅(三)--- JSTL和EL表情的相关文章

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

 先给大家看一段JSP的代码,看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<UsEL> itEL=usELList.itELator(); itEL.hasNext();) { UsEL usEL = itEL.next(); %> <tr> <td class="rd8"> <input type="checkbo

JAVA学习JSTL与EL

一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标准标签库,由apache实现 3.JSTL一般要配合EL表达式一起使用,由于在JSTL在赋值时会大量的使用EL,能够说EL是JSTL的一种辅助. 4.在使用时:JSTL须要引入:jstl.jar和Standart.jar到WEB_INF/lib文件夹下,可是仅仅使用EL表达式不须要引用不论什么jar

JAVA学习之JSTL与EL

一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标准标签库,由apache实现 3.JSTL一般要配合EL表达式一起使用,因为在JSTL在赋值时会大量的使用EL,可以说EL是JSTL的一种辅助. 4.在使用时:JSTL需要引入:jstl.jar和Standart.jar到WEB_INF/lib目录下,但是只使用EL表达式不需要引用任何jar包,只要

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

第75节:Java的中的JSP,EL和JSTL

第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转发请求1次,只能对当前项目跳转,重定向请求2次.重定向是无法传递的,重定向对跳转范围没有限制. Cookie是服务器发送给客户端,存储在客户端的小数据.发送cookie: Cookie cookie = new Cookie("key", value"); response.ad

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录

JAVA之旅(三十三)--TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录 我们继续网络编程 一.TCP 说完UDP,我们就来说下我们应该重点掌握的TCP了 TCP传输 Socket和ServiceSocket 建立客户端和服务端 建立连接后,通过Socket中的IO流进行数据的传输 关闭Socket 同样的,我们的客户端和服务端都是两个独立的应用 我们通过查阅API文档发现,该对象在建立的时候,就可以去连接指定主机,因为tcp是面向连接的,所以在建立socket服务时,

JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个阳光明媚的周末,一个又一个的周末,周而复始,不断学习,前方的路你可曾看见?随我一起走进技术的世界,流连忘返吧! 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象

JSTL、EL、ONGL、Struts标签的区别与使用

 一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以使用定制标签库,Jstl使JSP开发开发者可以减少对脚本元素的需求,甚至可以不需要它们. 定义 JSTL(JSP StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持JSP1.2和Ser