`
hai0378
  • 浏览: 529607 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP标签开发--详解

 
阅读更多

标签开发之几大步骤:

1,开发标签类,继承TagSupport类,

package org.lxh.tagdemo;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloTag extends TagSupport{
	public int doStartTag()throws JspException{
	 JspWriter out =super.pageContext.getOut();
	 try{
         out.println("<h1>hello World!!</h1>");
	 }catch(Exception e){}
     return TagSupport.SKIP_BODY;
	}
};

注意点 :编译的时候可能报错,请注意 tomcat路径下,jsp-api.jar的路径问题,把此文件夹放到 java环境下,jdk/jre/lib/ext 包下面,

2,定义一个标签的描述文件,标签的描述文件的后缀 "*.tld",而且此文件也符合XML语法规则。

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
<tlib-version>1.0<tlib-version>  <!--表示标签库的版本-->
<short-name>firsttag</short-name> <!--为标签库在TLD中的描述名称-->
<tag>
   <name>hello</name>
   <tag-class>org.lxh.tagdemo.HelloTag</tag-class>
   <body-content>empty</body-content>
</tag>
</taglib>

 3,在JSP文件之中使用此标签。

 

4,标签组成部分

 

 4.1>.标签处理类: HelloTag.java;

 4.2>.标签描述文件:hellotag.tlc

 4.3>.JSP页面: 通过<%@ taglib%>定义标签.

 4.4>(可选)在web.xml文件中配置映射名称.

 

********************************************************************************

1,定义有属性的标签

示例:自定义日期格式化操作

package org.lxh.tagdemo;
import java.text.*;
import java.util.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class DateTag extends TagSupport{
    private String format;  //设置属性的时候可以通过setter完成
	public int doStartTag()throws JspException{
	 SimpleDateFormat sdf = new SimpleDateFormat(this.format);
	 //表示进行格式化的日期显示操作
	 try{
	 	super.pageContext.getOut().write(sdf.format(new Date()));
	 }catch (Exception e){
        e.printStackTrace();
	 }
	 
	 return TagSupport.SKIP_BODY;
	}
    public void setFormat(String format){
	  this.format = format;
	}
	public String getFormat(){
	  return this.format;
	}
};
 

2,编写 *.tld文件,

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
<tlib-version>1.0<tlib-version>  <!--表示标签库的版本-->
<short-name>datetag</short-name> <!--为标签库在TLD中的描述名称-->
<tag>
   <name>date</name>
   <tag-class>org.lxh.tagdemo.DateTag</tag-class>
   <body-content>empty</body-content>
   <attribute>    <!-- 定义属性 -->
          <name>format</name>
	  <required>true</required>
	  <rtexprvalue>true</rtexprvalue><!-- 支持表达式输出 -->
   </attribute>
</tag>
</taglib>
 

3,为了方便的使用,直接在web.xml文件之中定义此标签库.

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  <jsp-config>
  	<taglib>
	  <taglib-uri>mldn_date</taglib-uri>
	  <taglib-location>/WEB-INF/datetag.tld</taglib-location>
	</taglib>
  </jsp-config>

 </web-app>

 ************************************************************************************

 

TagSupport类的简单介绍:

1,

doStartTag ()

2,

int doAfterBody ()
Default processing for a body.

<!-- Generated by javadoc (build 1.6.0_20) on Fri Jun 04 05:41:16 PDT 2010 -->

<noscript></noscript>

SKIP_BODY

static final int SKIP_BODY :

   表示表前提内容会被忽略,并且将执行权转交给 doEndTag()方法.

<!-- Generated by javadoc (build 1.6.0_20) on Fri Jun 04 05:41:16 PDT 2010 -->

<noscript></noscript>

EVAL_BODY_INCLUDE

static final int EVAL_BODY_INCLUDE

表示重复执行标签体的内容,会重复条用doAfterBody()方法,一直循环执行下去,直到doAfterBody()方法返回SKIP_BODY为止。

 

<!-- Generated by javadoc (build 1.6.0_20) on Fri Jun 04 05:41:16 PDT 2010 -->

<noscript></noscript>

doEndTag

int doEndTag
()
             throws JspException
static int SKIP_PAGE

 

表示JSP页面应该立刻停止执行,并将所有的输出立刻回传到浏览器上

 

static int EVAL_PAGE

 

表示JSP可以正常的运行完毕。

 

1.1 编写 *.java 文件:

package org.lxh.tagdemo;
import java.text.*;
import java.util.*;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class AttributeTag extends TagSupport{
   private String name;
   private String scope;

   public int doStartTag() throws JspException{
      //判断属性是否存在
	  Object value=null;
	  if("page".equals(this.scope)){  //是否是page范围
	     value = super.pageContext.getAttribute(this.name,PageContext.PAGE_SCOPE);
	  }
	  if("request".equals(this.scope)){  //是否是page范围
	     value = super.pageContext.getAttribute(this.name,PageContext.REQUEST_SCOPE);
	  }
	  if("session".equals(this.scope)){  //是否是page范围
	     value = super.pageContext.getAttribute(this.name,PageContext.SESSION_SCOPE);
	  }
	  if("application".equals(this.scope)){  //是否是page范围
	     value = super.pageContext.getAttribute(this.name,PageContext.APPLICATION_SCOPE);
	  }
	  if(value == null){
	    return TagSupport.SKIP_BODY;  //没有属性不执行标签体
	  } else {
	    return TagSupport.EVAL_BODY_INCLUDE ;  //执行标签体
	  }
   }
   public void setName(String name){
     this.name  = name;
   }
   public void setScope(String scope){
     this.scope  =scope;
   }
   public String getName(){
     return this.name;
   }
   public String getScope(){
     return this.scope;
   }
};
 

1.2, 编写 *.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
<tlib-version>1.0</tlib-version>  
<short-name>mldntag</short-name> 
<tag>
   <name>present</name>
   <tag-class>org.lxh.tagdemo.AttributeTag</tag-class>
   <body-content>JSP</body-content>
   <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true<rtexprvalue>
   </attribute>
   <attribute>
      <name>scope</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
   </attribute>
</tag>
</taglib>

  1.3,在 WEB-INF/web.xml 文件里面配置标签属性,

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  <jsp-config>
  	<taglib>
	  <taglib-uri>mldn_date</taglib-uri>
	  <taglib-location>/WEB-INF/datetag.tld</taglib-location>
	</taglib>
	<taglib>
	  <taglib-uri>mldn_page</taglib-uri>
	  <taglib-location>/WEB-INF/mldntag.tld</taglib-location>
	</taglib>
  </jsp-config>

 </web-app>

 1.4,开始写页面

 

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib prefix="mytag" uri="mldn_page"%>
<html>
<head>
	<title>www.MLDNJAVA.cn</title>
</head>
<body>
<h1>
  <%
    String scope = "session";
	session.setAttribute("username","zhangsan");
  %>
 <mytag:present name="username" scope="<%=scope%>">
 <h2><%=scope%>范围存在属性,内容是:"${sessionScope.username}"</h2>
 </mytag:present>
 <mytag:present name="allusers" scope="request">
 <h2><%=scope%>范围存在属性,内容是:"${requestScope.allusers}"</h2>
 </mytag:present>
</h1>
</body>
</html>

<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

BodyTagSupport : 是TagSupport类的子类,通过集成BodyTagSupport类实现的标签可以直接处理标签体内容的数

                             BodyTagSupport类的定义如下:

 public class BodyTagSupport extends TagSupport implements BodyTag

 

标签的开发在实际的开发中使用的很少,主要有第三方的提供的一些插件(重点 )

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 JSP 2.0 之后提供了 SimpleTagSupport 类,直接覆写里面的doTag()方法即可完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jsp-config标签使用详解

    ### jsp-config标签使用详解 在JavaServer Pages (JSP)技术中,`jsp-config`元素主要用于指定一组适用于整个Web应用程序或特定页面的配置参数。这些配置参数可以在部署描述符(web.xml)文件中定义,也可以通过注解...

    JSP应用开发详解(第二版)

    《JSP应用开发详解(第二版)》是深入学习Java Server Pages(JSP)技术的一本权威指南。这本书涵盖了从基础概念到高级特性的全面内容,旨在帮助开发者掌握JSP的精髓并应用于实际项目开发中。以下是根据章节标题和...

    jsp应用开发详解 jsp电子书

    **JSP应用开发详解** JavaServer Pages(JSP)是一种基于Java技术的动态网页开发工具,它允许开发者在HTML、XML或者其他标记语言中嵌入Java代码,以实现服务器端的程序逻辑。JSP的出现极大地简化了Web应用程序的...

    JSP应用开发详解源代码-1.rar

    《JSP应用开发详解》这本书是学习JSP技术的一个宝贵资源,提供了丰富的示例和实践代码,帮助读者深入理解JSP的原理和实际应用。 在"JSP应用开发详解源代码-1.rar"这个压缩包中,我们可以找到书中的第一部分示例源...

    jsp应用开发详解.zip

    【JSP应用开发详解】 JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态网页。JSP在Web开发领域中扮演着重要角色,因为它允许开发者将HTML代码与Java代码混合编写,使得网页内容能够根据服务器端的数据...

    JSP应用开发详解第三版源代码(整理版)B

    **JSP应用开发详解第三版源代码分析** 在IT行业中,Java Server Pages(JSP)是一种广泛用于构建动态web应用程序的技术。它允许开发者将HTML、CSS、JavaScript与Java代码混合编写,以实现服务器端的逻辑处理。《JSP...

    (JSP应用开发详解)JSP应用开发详解

    【JSP应用开发详解】 JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,主要用于构建服务器端的应用程序。在JSP应用开发中,开发者可以将HTML、CSS、JavaScript与Java代码相结合,实现数据的动态展示...

    jsp应用开发详解.part1

    jsp应用开发详解.part1 因为上传文件大小受限part2请到我的资源下载 作者:作者:刘晓华//张健//周慧贞 译者:作者:刘晓华//张健//周慧贞 出版社:电子工业出版社 本书结合JSP和Servlet的最新规范,从基本的...

    《JSP应用开发详解》随书光盘

    《JSP应用开发详解》是一本深度探讨JSP(Java Server Pages)技术的专业书籍,其随书光盘包含了丰富的源码示例,旨在帮助读者深入理解JSP在实际开发中的运用。这本书籍覆盖了JSP的基础知识、核心概念以及高级特性,...

    jsp应用开发详解.pdf

    **JSP应用开发详解** JavaServer Pages(JSP)是一种基于Java的技术,用于构建动态Web应用程序。它将HTML代码与Java代码分离,使得开发者可以更专注于网页的展示逻辑,而服务器端则处理业务逻辑。本篇文章将深入...

    jsp应用开发详解(中文高清pdf版)

    《jsp应用开发详解》这本书是Java服务器页面(JSP)技术的权威指南,它深入剖析了JSP的各个方面,帮助开发者全面掌握这一Web应用程序开发的重要技术。以下是对书中的主要知识点进行的详细解读: 1. **JSP基础**:...

    jspapi--jsp基础知识--jspapi

    **JSP(Java Server Pages)基础知识与JSPAPI详解** JSP是Java平台上的一个用于创建动态网页的技术,它结合了HTML、JavaScript、CSS以及Java代码,使得开发者可以在服务器端生成HTML页面。JSPAPI是Java Servlet API...

    jsp应用开发详解

    标题“JSP应用开发详解”指明了本书的内容聚焦于Java Server Pages(JSP)技术的应用开发,旨在深入阐述JSP技术在Web应用开发中的具体使用方法和最佳实践。JSP是基于Java技术的服务器端技术,它被广泛用于生成动态...

    JSP应用开发详解下载

    **JSP应用开发详解** JavaServer Pages(JSP)是一种基于Java的技术,用于构建动态Web应用程序。它将HTML代码与Java代码分离,使得开发者可以更专注于网页的展示逻辑,而服务器端的业务处理则由Java代码来完成。JSP...

    jsp应用开发详解 刘晓华

    jsp应用开发详解.part2 因为上传文件大小受限part1请到我的资源下载 作者:作者:刘晓华//张健//周慧贞 译者:作者:刘晓华//张健//周慧贞 出版社:电子工业出版社 本书结合JSP和Servlet的最新规范,从基本的...

    JSP应用开发详解第三版源代码

    **JSP应用开发详解第三版源代码** JSP(JavaServer Pages)是Java平台上的一个核心技术,用于构建动态web应用程序。《JSP应用开发详解第三版》是一本深入讲解JSP技术的专业书籍,其源代码提供了丰富的实例和实践...

    JSP应用开发详解》原版 (PDF)

    《JSP应用开发详解》是一本深入探讨JavaServer Pages(JSP)技术的专业书籍,旨在帮助读者全面理解和掌握JSP的各个核心概念、特性和实际应用。PDF版本提供了方便的电子阅读体验,使得开发者可以随时随地查阅和学习。...

    JSTL详解--jsp页面编写规范详解

    JSTL(JSP Standard Tag Library,JSP标准标签库)是一种被广泛应用于JavaServer Pages (JSP) 页面中的标准化标签库,旨在简化JSP页面开发过程,提高代码可读性和可维护性。相比于传统的Java代码片段,JSTL标签提供...

    jsp自定义标签开发+TLD文件元素详解+实例

    年 MM 月 dd 日");String dateStr = sdf.format(new Date());...总的来说,自定义标签和TLD文件是JSP开发中提高代码复用性和可读性的关键工具。通过正确理解和使用这些元素,开发者可以构建出高效且易于维护的JSP应用。

Global site tag (gtag.js) - Google Analytics