完成你的自定义JSP Tag标签-Basic Coustom Tag

简介: 完成你的自定义JSP Tag标签-Basic Coustom Tag

说明:基于Eclipse 3.2 + Tomcat 4.0编译完成


1.完成你自己的Tag Class,javax.servlet.jsp中提供一个Tag接口类


TagSupport 和 BodyTagSupport两个类,你自己的Tag Class必须


extends其中一个。本例中HrefTag Class extends TagSupport类,并


完成了doStratTag方法的重写,主要代码如下:

public int doStartTag(){

JspWriter ōut = pageContext.getOut();
  String value = getValue();
  String code = getCode();
  System.out.println("value = " + value);
  System.out.println("code = " + code);

try{
   if(code != null && value != null) {
    out.print("<a href=");
    out.print("'");
    out.print(value);
    out.print("'");
    out.print(">");
    out.print(code);
    out.print("</a>");
   }
  }catch(IOException e){
   System.out.println("Error in Tag:" +  e.getMessage());
  }
  
  return(SKIP_BODY);
 }
 

对于一个Tag Class来说,想要正确的工作,必需有相应的TLD文件,本例为

test-taglib.tld,定义如下:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>

 <tag>
  <name>href</name>
  <tagclass>com.test.tag.HrefTag</tagclass>
  <bodycontent>jsp</bodycontent>
  <info>Simplest example: href the page </info>
  <attribute>
   <name>code</name>
   <required>true</required>
   <rtexprvalue>false</rtexprvalue>
  </attribute>
  <attribute>
   <name>value</name>
   <required>true</required>
   <rtexprvalue>false</rtexprvalue>
  </attribute>
 </tag>
 
</taglib>
 

作为jsp页面要引用一个Tag,必需导入它对应的Tag声明,告诉系统怎么

去找到和地位到这个TLD文件,再根据TLD文件去寻找对应的Java文件

jsp页面声明如下:

<%@ taglib uri="simpleTag" prefix="test" %>

页面中应用Tag如下:

<li><test:href code="Click here" value="http://www.sina.com.cn" />

本文中由于在页面声明Taglib时候使用的uri是相对路径,因此要在

web.xml中加上taglib的声明,如下:

<taglib>


   <taglib-uri>simpleTag</taglib-uri>


   <taglib-location>

              /WEB-INF/tld/test-taglib.tld

   </taglib-location>

</taglib>
 

说一下我的目录结构:


jspTagSample


/src/com.test.tag.HrefTag


/jsp/index.jsp


/jsp/web-inf/web.xml


/jsp/web-inf/tld/test-taglib.tld


/build.xml


最后是程序的效果,点击Click here将会超连接到新浪主页




学习本例时候,可能遇到的常见问题:


页面请求时候遇到:Unable to compile clas for JSP


对策:把在build路径中要加上:%tomcat_home%/common/lib/*.jar


对应的build.xml文件为:

<path id="libraries">
        <fileset dir="${build}">
            <include name="*.jar"/>
        </fileset>
</path>
相关文章
|
7天前
|
SQL XML Java
JSP 教程 之 JSP 标准标签库(JSTL) 4
**JSP的JSTL是用于简化Web开发的标签库,包括核心、格式化、SQL、XML和函数5个部分。SQL标签库允许与数据库交互,如设定数据源、执行查询和更新,以及处理参数。例如, `&lt;sql:setDataSource&gt;` 定义数据源, `&lt;sql:query&gt;` 执行查询。通过使用JSTL,开发者能更整洁地处理JSP页面。**
22 8
|
8天前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 1
JSP的JSTL是用于简化页面逻辑的标签库,涵盖核心、格式化、SQL、XML和函数五大类标签。要安装,下载Apache的JSTL包,将jar文件放入WEB-INF/lib,tld文件复制到WEB-INF,并在web.xml中配置相应的taglib信息。JSTL促进了JSP页面的清洁和结构化。
17 5
|
6天前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 6
**JSP JSTL 摘要:** JSTL是JSP的标签库,包含核心、格式化、SQL、XML和函数5类标签。它用于执行常见任务,如迭代、条件判断和XML操作。JSTL函数库提供字符串处理函数,如`contains()`, `endsWith()`, `escapeXml()`等,方便XML和HTML处理。通过`&lt;%@ taglib %&gt;`导入,如`fn:trim()`用于去除字符串两端空白。
12 5
|
5天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
|
5天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
5天前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
|
5天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
|
5天前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
|
5天前
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。
|
5天前
|
搜索推荐 Java 数据库连接
探索Java Web开发:Servlet与JSP的协同工作原理
【6月更文挑战第23天】Java Web开发中,Servlet和JSP协同打造动态网站。Servlet是服务器端的Java程序,处理HTTP请求并执行复杂逻辑;JSP则结合HTML和Java,生成动态内容。Servlet通过`doGet()`等方法响应请求,JSP在首次请求时编译成Servlet。两者常搭配使用,Servlet处理业务,JSP专注展示,通过`RequestDispatcher`转发实现数据渲染。这种组合是Java Web应用的基础,即使新技术涌现,其价值仍然重要,为开发者提供了强大的工具集。