JAVA学习篇--JSTL基础
来源:互联网 发布:铝合金门 知乎 编辑:程序博客网 时间:2024/06/12 12:31
JSTL是什么
JSTL(JSP Standard TagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库。
为什么要用JSTL
我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:
jsp维护难度增加;出错提示不明确,不容易调试; 分工不明确;(即jsp开发者是美工,也是程序员);
最终增加程序的开发成本;
<% if (session.getAttribute(“user”).equals(“member”)) { %> <p>Welcome, member!</p> <% } else { %> <p>Welcome, guest!</p> <% } %>
由来:
JSTL的初衷是为了将前台美工同开发分开,很好的实现分层开发的目标。我们知道大多数的美工是对标签比较熟悉
JSTL的最大优势
1:让页面代码看起来更加整洁,显示逻辑一目了然,风格统一,易于维护
2:大量使用JSTL提供的逻辑操作(例如迭代、判断),可以大大减少JSP中脚本代码(Scriptlets)的数量
3:很好的实现了分层的思想!
4:对于美工人员来说更加容易学习和掌握,因为美工的一部分工作就是和各种标签打交道
5:而且同样可以对其进行自定义扩展!
弊端:
1,为前台美工人员,维护人员增加了学习成本
使用简介:
如果要使用JSTL,则必须引用jstl.jar和standard.jar两个包。
并在jsp文件的顶部加入以下内容:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
主要标签分类:
<c:> 核心标签库
包括与表达式相关的标签,输出JSP页面内容时的流程制标签,迭代操作标签,生成和操作URL的标签.
JSTL核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
<fmt:> 格式化标签库
定义了用来格式化数据(尤其是数字和日期)的操作还支持使用本地化资源束进行JSP页面的国际化
<fn:> Function标签库
提供了一组常用的 EL函数,主要用于处理字符串,在 JSP 中可以直接使用这些函数
JSTL一般配合EL一起使用,因此先看看EL.
EL(Expression Language)目的:为了使JSP写起来更加简单
语法结构:${expression}
举例:< %=request.getParameter(“username”)% > 等价于 ${ param. username }
下面我们来应用JSTL来修改一下jsp的页面:
使用JSTL之前:
<td><select name="category" class="select1" id="category"><%for (int i=0; i<itemCategoryList.size(); i++) {ItemCategory ic = (ItemCategory)itemCategoryList.get(i);String selectedString = "";if (item.getItemCategory().getId().equals(ic.getId())) {selectedString = "selected";}%><option value="<%=ic.getId() %>" <%=selectedString %>><%=ic.getName() %></option><%}%></select></td>
使用JSTL之后:
<td><select name="category" class="select1" id="category"><!-- 遍历list数组,将值存放到itemCategory中 --><c:forEach items="${itemCategoryList}" var="itemCategory"><c:set var="selectedString"/><!-- 如果item.itemCategory.id等于itemCategory.id --><c:if test="${item.itemCategory.id eq itemCategory.id}"><!-- 将selected的值存放到selectedString变量中 --><c:set value="selected" var="selectedString"/></c:if><option value="${itemCategory.id }" ${selectedString }>${itemCategory.name }</option></c:forEach></select></td>
总结:
对于JSTL来说,它对jsp页面进行了进一步的拆分,将jsp页面中的JAVA代码,隔离出来,不必要美工去关心java代码的实现,只考虑界面的美化即可,这样职责单一,分工明确。
在做DRP项目总结时,深刻体会到,其实我们现在学的好多技术实际都是抽象的不断扩展和延伸,是为了程序的复用性和易用性增加!我们都是在不断抽象,不断总结,不断简单化地进行学习!让我们的程序更加面向变化!
- JAVA学习篇--JSTL基础
- JSTL学习(很基础)
- javaweb基础学习(四)<jstl>
- JSTL基础篇(一)
- Java.Web学习笔记 JSTL
- java学习 jstl标签简介
- Java基础学习总结(11)——JSTL标签库
- Java Web开发基础(3)-JSTL
- java基础开发—jstl标签库
- 【java基础】JSTL之EL表达式
- 【java基础】JSTL标签库的使用
- java基础--jstl和el表达式
- Java Web学习(23): JSTL学习(一)
- Java Web学习(24): JSTL学习(二)
- Java Web学习(25): JSTL学习(三)
- Java Web学习(26): JSTL学习(四)
- Java Web学习(27): JSTL学习(五)
- JSTL基础
- jasig cas配置过程
- MSYS、MinGW、Cgywin
- app Widget 介绍及其例子一
- CSocket 和CAsyncSocket类介绍
- [LeetCode] Remove Duplicates from Sorted Array II
- JAVA学习篇--JSTL基础
- WinForm自定义窗体
- OSG中使用png图片显示透明效果
- Linux 内存详细信息
- java将异常堆栈转换为字符串
- ACM:回溯法,子集生成
- xcode环境变量
- QT在WIN7下开发环境的搭建
- Ubuntu Linux中vsFTP添加用户