sponsored links

Java Web开发基础3JSTL

    在DRP项目中接触到了JSTL标签库,对我这种比较懒的人来说,第一感觉就是“惊艳”。JSTL标签库的使用,可以消除大量复杂、繁复的工作。工作量减少的不是一点半点,是减少了一大半。任何工具的引入,都会使我们的工作变的简单,但是问题是我们工作可以变的简单,但是我们不能让自己的大脑变的简单。所以,我们不是简单的会用就可以,我们还需要了解这个工具是如何工作的,如何为我们提供便利的。ok,下面进入正题,我们从问题开始……

    JSP脚本带来的问题

    不知道看到这几个子,各位有什么想法?反正我觉得JSP就像孙猴子法力无边但是不服管教,是令人头疼的东西。为什么呢?JSP脚本极大的提高了程序的复杂性,同时JSP脚本也增加了代码阅读的困难。最后,也是最令人头疼的问题就是调试麻烦(感受深刻)。这就是源头了,你要是觉得体会不够深刻的话可以自己动手试试写JSP脚本
    从JSP1.1开始,JSP就支持在JSP中使用自定义标签,来解决JSP脚本所带来的问题。但是,自定义标签的广泛使用引发了新的问题,即重复定义、复用性差。因此,SUN公司推出了标签的标准,即JSTL(JSP Standard Tag  Libaray),而Apach实现了JSTL规范。下面价绍JSTL……

    JSTL 简介 

    JSTL包括五类标准标记库:核心库、格式库、XML库、SQL库、函数库。如下图所示:
  
Java Web开发基础3JSTL

    JSTL实际上是以另一种良好的界面或者说接口来代替了JSP脚本的工作,大家知道JSP页面是会被解析成Servlet的所以WebServlet容器在引入JSTL后肯定是要有对应的解析器。然后,就和原来使用JSP脚本没什么区别了。也就是说JSTL所做的工作是一种优化。
    另外呢,JSTL和EL表达式都是一块使用的,但是EL表达式不算是JSTL的一部分。因为,没有JSTL的情况下,EL表达式也是可以使用的。虽然有的资料直接说JSTL包括JSTL和EL表达式两个部分,应该是不太妥当的。所以,EL表达式会在下篇博客单独介绍。

  实例体验

    这是在使用JSP脚本和JSTL所做的循环输出。

  JSP版本:
         
            <%	List itemList = pageModel.getList();
			for (Iterator iter = itemList.iterator(); iter.hasNext();) {
			Item item = (Item) iter.next();
	    %>
		<tr>

		    <td class="rd8">
			<input type="checkbox" name="selectFlag" class="checkbox1"
						value="<%=item.getItemNo()%>">
		    </td>
		    <td class="rd8">
			<a href=""
			 onClick="window.open('item_detail.html', '详细信息', 'width=400, height=400, scrollbars=no');"><%=item.getItemNo()%></a>
		    </td>
		    <td class="rd8">
			 <%=item.getItemName()%>
		    </td>
		    <td class="rd8">
			  <%=item.getSpec()%>
		    </td>
		    <td class="rd8">
		          <%=item.getPattern()%>
		    </td>
		    <td class="rd8">
			  <%=item.getItemCategory().getName()%>
		    </td>
		    <td class="rd8">
			  <%=item.getItemUnit().getName()%>
		    </td>
		</tr>
		<%
				}
		%>
         

    JSTL版本:        

            <c:forEach items="${pageModel.list}" var="item" >		           
					<tr>
						<td class="rd8">
							<input type="checkbox" name="selectFlag" class="checkbox1"
								value="${item.itemNo }">
						</td>
						<td class="rd8">
							<a href="#"
								onClick="window.open('item_detail.html', '物料详细信息', 'width=400, height=400, scrollbars=no');">${item.itemNo }</a>
						</td>
						<td class="rd8">
							${item.itemName }
						</td>
						<td class="rd8">
							${item.spec }
						</td>
						<td class="rd8">
								${item.pattern }
						</td>
						<td class="rd8">
								${item.itemCategory.name }
						</td>
						<td class="rd8">
								${item.itemUnit.name }
						</td>
					</tr>
			</c:forEach>



    总结:总的来说,JSTL最大的特点就是简单。它相当于对JSP脚本做了一次封装,或者说是外观模式的应用吧。将复杂的逻辑处理隐藏起来,对外提供统一的接口。也就是说JSP页面的开发可以不依赖于Java代码了,即在现在分工越发明细,职责越发单一的开发趋势下为web开发的现实和逻辑划清了界限。也就是说在开发人员的配置上实现了解耦和。

                         
Tags:
  • java Web开发基础(一)工程项目文档结构
    java Web开发基础(一)工程项目文档结构
           2013年毕业后,在深圳工作开始是用.NET ASP.NET MVC做的项目,后来公司用java来做.于是就从.NET转java了.从.NET转java不是那么的难.今天刚好是清明节放假三天,整理了java web项目的文档结构. 一.Struts2+Spring+Hibernate 项目的文档结构   二.Spring MVC+MyBatis ...
  • Java Web开发基础1Servlet
    Java Web开发基础1Servlet
    概述     Servlet技术是对web服务器的扩展,要理解这个,可能先了解一下什么是Web服务器以及它的功能,特别是它的不足是很有帮助的,可参考:点击打开链接.另外,Servlet也是一个用java语言的Servlet API编写的特殊的java类,它运行在Servlet容器中.它的功能是分析请求,处理请求,构造响应消息,它本来就处于web服务的线上这也 ...
  • Java Web开发基础2JSP
    Java Web开发基础2JSP
        上一篇博我粗略的介绍了一下Servlet,粗略是因为博主也刚刚学习这部分的内容,还不是很懂所以无法讲的很精细.但是本着二八原则,我还是先继续学习.所以,这篇博客接着JSP的内容.因为,这两个内容关联性还是比较强的,学习的过程也应该是互相促进的. 简介     概述:JSP(Java Server Page)简单的说是一种动态网页技术,它通过在HTML ...
  • JAVA web开发基础三、模式和框架
    1.什么是模式? 模式,即pattern.其实就是解决某一类问题的方法论.你把解决某类问题的方法总结归纳到理论高度,那就是模式. Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心.通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作. 模式有不同的领域,建筑领域有建筑模 ...
  • Java Web开发基础零星知识
    1. Web的三个核心标准 万维网的核心标准有三个,分别是URL.HTTP和HTML. URL(统一资源定位符,Universal Resource Locator),为描述Internet上的网页以及其他资源地址提供了一种标识方法.本URL包含模式(或称协议).服务器名称(或IP地址).路径和文件名. 绝对URL(absolute URL)显示文件的完整路 ...