以下将一步一步地教你如何建立自定义的标签,具体的例子是扩展JSP,令它拥有自己的HTML编码功能。这个功能将所有的<和>字符用 HTML代码来代替。它可以很容易地扩展为做其它的编码处理。为了简化,这个例子只解释了建立自定义标签的基本要素。 代码中的任何可重用部分都应该放到一个JavaBean中。这一点是很重要的。这样你就可以在其他项目中重用这些代码了。由于任何放置在标签处理器内的代码在标签外都是不可以重用的,因此将可重用的代码部分独立开来是很重要的。在这个例子中,为HTML编码的逻辑是常用的,因此放到JavaBean中,请参看清单B
清单B:HTML编码JavaBean
/* HTML_Format.java */
public class HTML_Format extends Object implements java.io.Serializable {
/** 创建新的HTML_Format */
public HTML_Format() {}
/** 将一个字符串中所有的 <和 >字符用相应的HTML编码代替 */
public String HTML_Encode(String as_data)
{
int li_len = as_data.length()
/*string buffer的长度要比原来的字符串长*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10))
/* 循环替换全部的<和 >字符 */
for( int li_count = 0 li_count <li_len li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count))
if (ls_next.equals(<)) ls_next = <
if (ls_next.equals(>)) ls_next = >
lsb_encode.append( ls_next )
}
return( lsb_encode.toString() )
}
} 标签处理器的代码请参看清单C:
清单C:HTML编码标签处理器
import java.io.IOException
import javax.servlet.jsp.*
import javax.servlet.jsp.tagext.*
public class HTML_FormatTag extends BodyTagSupport
{
/* 1) 在标签末将会调用这个函数 */
public int doEndTag() throws JspTagException
{
try
{
/* 2)得到标签中的文本 */
BodyContent l_tagbody = getBodyContent()
String ls_output =
/* 3)如果标签体有文本,就处理它 */
if(l_tagbody != null)
{
HTML_Format l_format = new HTML_Format()
/* 3a) 将标签体的内容转换为一个字符串 */
String ls_html_text = l_tagbody.getString()
ls_output = l_format.HTML_Encode(ls_html_text)
}
/* 4)将结果写回到数据流中 */
pageContext.getOut().write(ls_output.trim())
}
catch (IOException e)
{ throw new JspTagException(Tag Error: + e.toString())
}
/* 让JSP继续处理以下页面的内容 */
return EVAL_PAGE
}
}
这个处理很简单,它包括有:
1.读入位于开始和结束标签间的文本
2.调用html编码函数
3.将结果返回到JSP页面。 我们需要描述自定义标签以让系统知道如何处理。该描述文件的后缀为.tld,TLD文件通常就以标签处理器命名,并存放在“/WEB-INF/”目录之下。请参看清单D。
清单D:HTML编码标签描述器
<!DOCTYPE taglib
PUBLIC -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN
http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd>
1.0
1.1
HTML_FormatTag
HTML Encoding Tag
HTMLEncode
HTML_FormatTag
Encode HTML 现在可以告诉JSP容器如何使用标签库了。为此要修改web.xml文件,具体说来是要在其中加入一个taglib的项目来注册该标签库,并为标签分配一个URI。URI是Web站点上唯一应用于这一特定标签的索引。由于标签今后还可能用在不同的Web站点上,所以你最好采用完整的URL和/或者包名字(package name)来保证这一唯一性。这个例子是简化了,示例代码请参看清单E。
清单E:修改web.xml文件
<!DOCTYPE web-app
PUBLIC -//Sun Microsystems, Inc.//DTD Web Application 2.2//EN
http://java.sun.com/j2ee/dtds/web-app_2.2.dtd>
HTMLEncode
/WEB-INF/HTML_FormatTag.tld 自定义的标签设置好后,就可以用在你的JSP页面上了。要做到这一点,只需要在页面上使用taglib指示命令声明所要采用的标签即可。标签通过其唯一的 URI被索引,然后被分配给一个名字空间前缀(prefix)。这一前缀并没有什么特别的意义,只要它不与其它的名字空间冲突便可,可以任意。请参看以下的清单F和G。
清单F:在一个JSP页面上使用HTML编码标签
清单G:范例代码的输出
which displays as:
通过这个标签,我就将该页面的所有代码编码了。所有的自定义标签都是在服务器上处理的。这意味着你将不会在输出的页面上看到自定义的标签。
正如你所看到的那样,建立标签并非难事。最麻烦的是学习标签处理器的整个细节。这是一个很强大的功能,我们不过是触及了皮毛。由于这一过程需要采取的步骤很多,所以刚入门的JSP程序员可能在建立标签的时候会觉得很困惑。
1、进入Apache官网找到,jstl包的链接准备下载,版本可以随意选择,尽量选择比较新的版本。
2、需要下载的jstl包有4个,分别是impl,Spec,el,compat。这4个jar包分别进行下载。
3、下载后的压缩包有四个,找到下载的路径中的包需要引用。
4、将下载的4个jar包复制到新建的工程的lib目录下。
5、将新建的jsp页面中,写上引用连接。
扩展资料:
JSTl基本应用:
1、核心标签库:包括基本的语言功能,变量 *** 作,流程控制等等。
2、国际化和格式化标签库:进行国际化 *** 作和格式化 *** 作,例如格式化时间等等。
3、SQL标签库:主要用于对关系型数据库的存储 *** 作。
4、XML标签库:主要用于对xml格式数据的 *** 作。
5、函数标签库:主要定义对字符串 *** 作的函数库,在EL表达式中运行。
<!-- JSTL 函数 包含一系列标准函数,大部分是通用的字符串处理函数-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!-- JSTL 核心标签库 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- JSTL 格式化标签 用来格式化并输出文本、日期、时间、数字 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!-- JSTL SQL标签库 提供了与关系型数据库进行交互的标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<!-- JSTL XML标签库 提供了创建和 *** 作XML文档的标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)