千里马

天马行空

JSTL(jsp标准标签库)

1,JSTL是一个不断完善的开放源代码的jsp标签库,有Apache组织的jakarta小组维护。JSTL只能运行在支持jsp1.2和Servlet2.3规范及其以后的web容器上,Tomcat4.x版本以上均可使用。从jsp2.0开始作为javaee标准支持的。
2,jsp标签库:jsp标签库规范指出,开发这可以通过实现javax.servlet.jsp.tagext.JspTag接口,并提供一个标签库的描述文件(XML格式,以.tld结尾)来实现一个标签库。使用该标签库的jsp文件需要使用taglib指令元素进行导入。
jsp标签库最大的有点是把某种特定的功能进行封装,需要使用这种功能的地方可以直接调用,而不必重复些类似的代码,尤其对于web开发常见的功能非常有帮助。
例子如下
(1)完成标签类:
package JSTL;

import java.io.IOException;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class MyTag extends TagSupport {
  @Override
public int doEndTag() throws JspException {
  JspWriter out= pageContext.getOut();
  try {
  out.print(new Date().toString());
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
  return EVAL_PAGE;
}
}
(2)完成标签库描述文件:
<?xml version="1.0" encoding="UTF-8"?>
 <taglib>
<tlibversion>1.0</tlibversion>
<jspversion>2.0</jspversion>
<shortname>tagLib</shortname>
<uri>/WEB-INF/TagDescription.tld</uri>
<info>myTagLib</info>
<tag>
<name>currentName</name>
<tagclass>JSTL.MyTag</tagclass>
<bodycontent>empty</bodycontent>
</tag>
</taglib>

(3),在jsp页面中使用:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/WEB-INF/TagDescription.tld" prefix="m" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
 
  <body>
   µ±Ç°Ê±¼ä£º<m:currentName/>
  </body>
</html>
3,jstl的优点:(1)简化了jsp的开发,减少了jsp中的scriptlet代码数量。jsp主要用于显示业务逻辑代码处理以后的数据结果。不可避免的会使用循环,布尔逻辑,数据格式转换等语句,如果使用jsp脚本的for、if或其他语句,不仅需要导入必要的包,而且每个类似的地方都要写相同的代码,非常不利于维护。使用jstl可以大大简化这方面的开发。
(2),在应用程序服务器之间提供了一致的接口,最大程度提高了web应用在各应用服务器之间的移植。jstl属于javaee规范以内,所有符合web规范的服务器都必须支持jstl,所以将web应用程序进行移植完全不存在问题。反过来,如果是其他第三方提供的标签库,就需要提供另外的资源才能进行移植。
(3),jstl的开源性决定了它具有很强的扩展性。jstl的给类标签几乎覆盖了所有web应用程序的常见功能,如果这些功能还不能满足开发者的需求的话,可以对他本身的实现类继续进行扩展,及利用率jstl的良好设计,又可以满足特定的需求。
4,JSTL标签库使用方法:

标签库                         URI                                           前缀      使用模式
核心标签库                  http://java.sun.com/jstl/core         c             <c:tagname…>

国际化标签(I18N)        http://java.sun.com/jstl/fmt           fmt         <fmt:tagname…>

SQL标签库                 http://java.sun.com/jstl/sql            sql          <sql:tagname…>

XML标签库                http://java.sun.com/jstl/xml          x            <x:tagname…>

函数标签库                  http://java.sun.com/jstl/functions   fn           <fn:tagname…>

 (1)核心标签库:包含了常用的标签、迭代标签和其他一些一般用标签。在jsp页面中使用核心标签库的引用格式:
<%@ taglib uri=" http://java.sun.com/jstl/core" prefix="c"%>
一般用途标签:<c:out><c:set><c:remove>
<c:out>用于向jsp的输出流打印一个表达式的结果。
<c:set>用于向特定的作用范围设置一个属性对象或设置一个javabean的属性值。
迭代标签<c:foreach>:在web应用程序中,迭代主要用于访存和显示数据集。通常以列表和表中的一系列行的形式显示。实现迭代内容的主要的jstl标签是<c:foreach>.该标记支持两种不同样式的迭代,整数范围的迭代(类似java语言的for循环语句)和集合上的迭代(类似java语言的iterator和foreach);
使用<c:if>和<c:choose>实现布尔逻辑判断。
jstl核心标签库的其余标签主要是关于url的,这些标签中首推<C:url>,用于生成url。它提供了三个功能元素,为javaweb应   用程序构造url时特别有用。
  (1),在前面附加当前servlet上下文的名称。
   (2),为会话管理重写url
   (3),请求参数的名称和值的url编码。
(2),jstl数据库标签库(sql):
jstl数据库标签库是为了减少操作数据库的jsp脚本代码而设计的。让开发者快捷的操作数据库,他的本质上也是使用jdbc进行数据库操作的。
使用数据库标签库的:<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql"%>
使用jstl数据库标签进行数据库数据的添加,删除,查询,修改操纵大致分为三步,:准备数据源、执行sql语句,及根据执行结构进行相应的操作。
(1),使用<sql:setDataSource>标签为所有的sql标签准备数据源对象,。一般来说,一个web应用程序只需要一个数据源即可。
  <sql:setDataSource
     driver="驱动类名"
     url="连接字符串"
     user="用户名"
     password="密码"
     var="数据源保存的变量名"
     scope="作用范围"
 />
(2),<sql:query>标签用于执行select的sql语句,得到 查询的结果集。
<sql:query var="结果变量"sq="sql"
       [scope="作用范围"
datasource="数据源"
 maxRows="最大行数"
startRow="其实行数"]>
[<sql:param>指定sql参数]
</sql:query>
使用<sql:update>标签更新数据库数据:<sql:update>标签用于执行insert、update和delete的sql语句得到的结果为影响的记录条数:
 <sql:update var="结果变量" sql="sql语句"
     [
scope="作用范围"
datasource="数据源"]>
[<sql:param>指定sql参数]
<sql:update>
<sql:update var="结果变量"
     [scope="作用范围"
     datasource="数据源"]>
sql语句
[<sql:param>指定sql参数]
</sql:update>
使用<sql:transaction>标签来使用数据库事务
事务处理用于保护作为一组必须成功或必须失败的一系列数据库操作。当使用jstl的数据表标签库来进行数据库操作的时候同样可以使用事物,将相应的<sql:query>和<sql:update>操作嵌套到<sql:transaction>标签的主体内容中,把一系列的查询和更新操纵打包到一个事物处理中即可。
<sql:transaction [dataSource="数据源" isolation="隔离级别"]>
<sql:query .../>
or
<sql:update.../>
...
</sql:transaction>
(3)JSTL函数标签库(Function)
函数标签库相对于其他的标签库来说比较特殊,它是jstl定义的标准的el函数集合。直接在el中使用,使用方式:fn:函数名(参数)。该标签库定义的函数基本上都是对字符串进行相关操作的函数。
布尔表达式函数:contains,containsIgnoreCase startWith endWith返回的true和false
fn:contains("源字符串","匹配字符串")
fn:contains("源字符串","匹配字符串");
fn:startWith("源字符串","匹配的开头字符串");
fn:endWith("源字符串","匹配的结尾字符串");
整型表达式函数:indexOf和length分别是返回字符串的下表和整个字符串的长度
fn:indexOf("源字符串","匹配字符串")
fn:length("源字符串")
字符修改函数:fn:replace("源字符串","匹配字符串","替换后的字符串")用于替换字符串的某些内容
fn:subString ("源字符串",开始下标,"结束下标")用于截取字符串的一段
fn:toUppercase()转换成大写
fn:toLowerCase()转换成小写
fn:trim 去掉字符串两头的空格

posted on 2012-05-24 09:28 Mr Lee 阅读(4064) 评论(1)  编辑  收藏 所属分类: java技术

Feedback

# re: JSTL(jsp标准标签库)[未登录] 2014-04-29 16:29 ddd

fsdfsd  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿

随笔分类

随笔档案

文章档案

(hibernate)http://www.blogjava.net/dyllove98/archive/2012/05/12/377959.html

搜索

最新评论

阅读排行榜

评论排行榜