jsp自定义标签实例

合集下载

jsp自定义标签中的Function函数

jsp自定义标签中的Function函数

jsp⾃定义标签中的Function函数在taglib中我们发现有⼀个标签叫做<function>,这次简单介绍<function>标签的基本⽤法,<function>标签可以做什么呢?它可以让我们在jsp⽤直接调⽤某个⽅法,根据⾃定义的⽅法返回指定的值,兼容jstl标签,省去了在jsp中直接使⽤<%!%>来定义⽅法体再调⽤的繁琐.如果你⽤过el语⾔的话估计会很快上⼿,其实<function>标签就是⼀个拥有⽅法体的el语⾔.注意:function所定义的⽅法必须需要是静态的,如果不是静态的话jstl是不能识别所定义的⽅法.Java代码如下:package org.lxh.taglib;import java.util.List;public class FunctionTag {public static String hello(String name) {return name;}public static Integer bbq(List list) {return list.size();}}⽅法必须静态,可以定义有返回值或者void类型的⽅法.tld:<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0</tlib-version><short-name>my</short-name><uri></uri><function><!--EL页⾯调⽤名字--><name>hello</name><!--指定标签的处理类,指定了标签由哪个Java类来处理。

自定义标签(Custom Tag)

自定义标签(Custom Tag)

一、概述JSP中有一块重要的技术:自定义标签(Custom Tag),最近这几天在学习Struts的时候发现Struts中使用了很多自定义标签,如html、bean等。

所以我就做了个简单的试验,学习一下这种技术。

首先介绍一下这种技术吧!1.优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。

2.开发流程:(1)编写JSP,在JSP中使用自定义标签。

(2)在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。

(3) .tld文件中指定标签使用的类。

3. 自定义标签的分类:(1)简单标签:如< mytag:helloworld/>(2)带属性标签:如<imytag:checkinput dbname = “<myBean.getDBName()>”/>(3)带标签体的标签:在自定义标签的起始和结束标签之间的部分为标签体(Body)。

Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。

<mytag:che ckinput dbname = “<myBean.getDBName()>”><mytag:log message=”Table Name”><mytag:checkinput />(4)可以被Script使用的标签:定义了id和type属性的标签可以被标签后面的Scriptlet使用。

<mytag:connection id = “oraDB” type = “DataSource” name = “Oracle”><%oraDB.getConnection(); %>4.接口及其他实际上,自定义标签的处理类实现了Tag Handler对象。

JSP技术在javax.servlet.jsp.tagext中提供了多个Tag Handler 接口,JSP1.2中定义了Tag、BodyTag、IterationTag接口,在JSP2.0中新增了SimpleTag接口。

jsp课件

jsp课件

JSP第一天一、JSP(java server page)1、JSP 是服务器端运行的页面,JSP 本身就是一个文档,他不仅可以包含静态的HTML 代码,也可以包含动态的JAVA 代码,服务器容器可以将JSP 转换成Servlet 发布,并接受请求。

2、JSP is a Servlet!tomcat-5.5.17\conf\web.xml 文件中<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>true</param-value> --- 直接用应用名字访问的时候,会把应用的所有文件目录列出来,系统发布的时候置为false</init-param><load-on-startup>1</load-on-startup></servlet>tomcat-5.5.17\conf\server.xml 文件中<Connector port="8080" maxHttpHeaderSize="8192" --- 可以修改端口,前提是系统中没有占用的端口,改为80 的时,访问可以不写端口,默认值,系统发布时用maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disable UploadTimeout="true" />3、Jsp 文件只需放在应用文件下就可以了。

JSP自定义标签的实现

JSP自定义标签的实现
1 4
J S P自定义标签 的实现
J S P自定义标签的实现
蒋波 任 继念 崔蔚
( 中国工程物理研究院工学院,四川绵阳,6 2 1 9 0 0 )


文章介绍了实现 自定义标签 需要 的接 口和基类 ,也通过具体例子说明 自定义标签的实现方法和在
J S P页中的应用 。
关键词 T a g S u p p o r t 类;B o d y T a g S u p p o r t 类 ;T L D;t a g l i b指令
T a g . S KI P B OD Y 表 示标签 的体 内容 应该 忽略 , T a g . E V AL B O DY I NC L UD E表示 体 内容应 该被 处理 ,
收稿 日期 :2 0 1 4 . 0 1 - 0 6
笙! 星 墨 塑
塾 兰 皇 型 垫
然后 控制 转 移 到 d o Af t e r B o d y 方 法 上 ,这 个 方法 也返 回两 个可 能值 之一 ,T a g . S KI P _ BO DY将控 制转 移
容的情形 , 而T a g与 I t e r a t i o n T a g 接 口和对应的 T a g S u p p o  ̄类适用于标签体内容为空或直接把体内容传 递到页面 的简单情形,没有体 内容的标签也可直接实现更简单的 T a g 接 口。
I t e r a t i o n T a g接 口的执行 流程 如 图 1右 半部分所 示 ,第 一步 是获得 适 当类 的一个 实例 ,或者 从 J S P 容器 的标 签 处理 器 资源 池 ,或 者产 生一个 新 实例 ,然 后 ,标 签 处理器 属性被 设置 ,这 包括 J S P 容器调 用T a g接 口的 s e t P a g e C o n t e x t( )方 法指 定 当前 的 P a g e C o n t e x t 对 象 ,调用 s e t P a r e n t( )提供 对 当前标

JSP课件-12标准标签

JSP课件-12标准标签

迭代标签库
迭代标签用于多次计算标签体 迭代标签库中的标签有: 迭代标签库中的标签有:
迭代标签
forEach
forTokens
迭代标签库
<%@ taglib uri="/jstl/core_rt" prefix="c" %> <%! String [] numbers = { "1", "2", "3", "4" }; %> <c:set var="member" value="Joe:Petter;Ryan|John" scope="page" /> <BODY> forEach 标签将遍历对象集 <c:forEach var="numbering" items="<%= numbers %>"> 合并显示1 合并显示1到4之间的数字 <c:out value="${numbering}" /> </c:forEach> <c:forTokens items="${pageScope.member}" delims=":;|" var="membername"> <c:out value="${membername}" /> <br /> forTokens 将遍历用所提供的分 </c:forTokens> 隔符分隔的值并显示所有的名称 </BODY>
自定义Java类继承于标签 类继承于标签API 自定义 类继承于标签 编写标签描述文件 配置web.xml 配置 使用自定义标签

如何设置自定义标签

如何设置自定义标签

如何设置⾃定义标签1.什么是⾃定义标签,查询单独的某种⽤户的特定信息时可以使⽤⾃定义标签。

2.如何设置⾃定义标签。

1.2.全部代码如下:<?xml version="1.0" encoding="UTF-8" standalone="no"?><taglib xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> <display-name>Ruiec Tags</display-name><tlib-version>1.0</tlib-version><short-name>ruiec</short-name><uri>/ruiec-tags</uri><tag><name>hasPerms</name><tag-class>com.ruiec.web.template.jsp.directive.HasPermsTag</tag-class><body-content>scriptless</body-content><attribute><name>perms</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>date</name><tag-class>com.ruiec.web.template.jsp.directive.DateTag</tag-class><body-content>scriptless</body-content><attribute><name>startDate</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>endDate</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>type</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>module</name><tag-class>com.ruiec.web.template.jsp.directive.ModuleTag</tag-class><body-content>scriptless</body-content><attribute><name>parentId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>department</name><tag-class>com.ruiec.web.template.jsp.directive.DepartmentTag</tag-class><body-content>scriptless</body-content><attribute><name>parentId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>user</name><tag-class>erTag</tag-class><body-content>scriptless</body-content><attribute><name>userId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><!-- 查询回复帖⼦ --><name>replyArticle</name><tag-class>com.ruiec.web.template.jsp.directive.ReplyArticleTag</tag-class><body-content>scriptless</body-content><attribute><name>replyArticleId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>3.配置Tag⽂件如下,这⾥相当⼀个查询。

JSP01基础语法

JSP01基础语法

JSP标准指令JSP标准指令用来设定JSP网页的整体配置信息例如配置JSP中的全局变量,声明类,要实现的方法和输出内容的类型等。

它的特点是:它们并不向客户端产生任何输出,并且所有的指令在JSP整个文件范围内有效在JSP常用的共有三种JSP指令,它们是被设置在<%@和%>括号中插入到HTML 网页的。

1JSP标准指令格式:page语句应用格式:page语句作用于整个JSP网页,即作用范围是整个JSP网页,它用于定义JSP网页文件中的全局属性,其中各个选项的意义分别为:注:用error.jsp文件接收异常的时候, 需要关闭:浏览器---→integer选项------→高级-----→显示友好http错误信息不选择.,否则浏览器将要拦截.在web.xml中配置异常<error-page><exception-type>ng.Exception</exception-type><location>/WEB-INF/error.jsp</location></error-page>此时出现错误的页面不用加 errorPage=”error.jsp”当出现异常时,程序转到由<location>/WEB-INF/error.jsp</location>指向的路径error.jsp放置到WEB-INF路径下,客户端无法访问.JSP脚本指令标签JSP通常使用一系列特殊标签在网页中引入Java代码或Java片断JSP隐含(内置)对象在JSP内部有一个隐含对象集合,编写JSP页面中,可以直接调用这些隐含对象中的方法而不必事先要把它实例化。

简化了JSP页面的开发。

JSP步骤 简单实例

JSP步骤 简单实例

上机一 WEB 应用开发环境配置内容:搭建JSP工作环境,主要包括Java JDK的安装、Tomcat服务器的安装和构建班级论坛的第一个JSP的index.jsp首页面。

1. 安装JDK的步骤如下找到jdk-6-windows-i586.exe 运行安装程序,设定安装路径为D:\学习软件\jdk1.6.0, 其余接受默认安装。

安装结束后就要配置环境变量,包括java_home,path和classpath的设置,操作步骤如下:1)用鼠标右击“我的电脑”,选择“属性”,→“高级”→“环境变量”→“系统变量”→“新建”→在“变量名”输入框中写入“java_home”,在“变量值”输入框中写入“D:\学习软件\jdk1.6.0”→点击“确定”。

2)选中“系统变量”查看是否有classpath项目,如果没有就点击“新建”,→如果已经存在就选中classpath选项,→点击“编辑”按钮,→然后在“变量名”中填写“classpath”,→在“变量值”中填写“.;D:\学习软件\jdk1.6.0\lib;D:学习软件\jdk1.6.0\jre\lib”。

在“path”设定时,“变量名”输入框填写“path”,“变量值”输入框填写“D:\学习软件:\jdk1.6.0\bin”3)打开命令提示符窗口,输入命令“java -version”,看到Java版本的信息,确定安装完成。

2. 安装Tomcat6步骤如下将apache-tomcat-6.0.18.zip从磁盘中解压到D:\学习软件盘符下在D:\学习软件\apache-tomcat-6.0.18\bin目录下双击“startup.bat”启动服务器,双击“shutdown.bat”关闭服务器。

在环境变量中添加“变量名”为“tomcat_home”,“变量值”为“D:\学习软件\apache-tomcat-6.0.18”的设定。

在启动服务器后,打开浏览器,在地址栏输入http://localhost:8080查看,如出现主页,则表示安装成功。

第08章 JSP核心表达式与标签

第08章  JSP核心表达式与标签

8.1.4 JSP表达式隐藏对象
返回
JSP表达式简介
表达式语言( EL)是 JSP2.0 版本之后引入的新功能, 该语言是一种简单,容易使用的语言并且可以使用标签 快速的访问JSP的隐含对象和JavaBean组件。 表达式语言虽然是一种简单的语言,但它可以非常 方便的操作各种算术、关系、逻辑或空值测试运算符, 从而提高运算效率。
调用El表达式的一般格式如下: ${expression}
注意:$和{}不要漏写,它是组成EL表达式不可缺少的一部分。
返回
JSP表达式使用 (1)
例如:
<table width="241" height="96"> <tr> <td align="center" bgcolor="#FFFFFF">6-2=${6-2}</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">4*6=${4*6}</td> </tr> </table>
(2)用于访问环境信息的对象如表所示。
隐藏对象 cookie initParam header param headerValues 类型 Java.util.Map Java.util.Map Java.util.Map Java.util.Map Java.util.Map 含义 把单个的cookie对象映射到cookie名当中 把单个值映射到上下文初始化参数的名称当中 映射请求头名到单个字符串数组 把单个字符串参数值映射到请求参数名当中 把字符串数组映射到请求头名称当中

任务2-3 完善小小留言板[26页]

任务2-3 完善小小留言板[26页]

2.3.1 自定义标签
3.标签库构成 一个标签库由以下几部分构成:标签处理器、 标签库描述文件、应用程序部署描述符文件、 在JSP页面中的标签库声明。
(1)标签处理器(tag handler)
使用JSP自定义标签时,是由一个特殊的Java类来 决定怎样自定义标签的。这个Java类就是标签处 理器(tag handler)。
JSTL包含两个部分:标签库和EL (Expression Language,表达式语言),
JSTL--一般标签
(1)<c:out>。该标签用于在JSP中显示数 据。
属性主要有:
value:输出信息,可以是EL表达式或常量。该参 数是必须的。
default:value为空时的显示信息。 escapeXml:其值为true时避开特殊的XML字符集。
(2)创建标签配置文件。创建完处理器类后,要 创建标签库描述符来描述标签库中的每个标签。
(3)注册TLD文件。在web.xml文件中需要加入相 应配置,以便JSP引擎定位JSP自定义标签所关联 的TLD文件。
(4)在JSP页面中使用自定义标签。
2.3.2 JSTL简介
JSTL(JavaServer Pages Standard Tag Library),是一个不断完善的开放源代码 的JSP标准标签库,是由Apache和Jakarta 小组来维护的。JSTL至少运行在支持 JSP1.2和Servlet2.3规范的容器上,在 JSP2.0中是作为标准予以支持的。
TLD文件是一个XML格式的文件,它包含标 签库中所有标签的元信息。如标签名称、 所需包含的属性、相关联的标签处理器类 名等。这个文件由JSP容器读取并处理。
(3) web.xml文件

TLD文件配置详解jsp自定义标签

TLD文件配置详解jsp自定义标签

TLD文件配置详解(jsp自定义标签)TLD文件配置详解<tag><name>write</name><tagclass>org.apache.struts.taglib.bean.WriteTag</tagclass><bodycontent>empty</bodycontent><attribute><name>bundle</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>其中:<name>write</name>:这个Tag的名字<tagclass>org.apache.struts.taglib.bean.WriteTag</tagclass>:这个Tag 是由那个类实现的(这个class可以在struts.jar包中找到)<bodycontent>empty</bodycontent>:这个Tag可以直接结尾,不需要填写内容这里bodycontent有三个可选值jsp 标签体由其他jsp元素组成如果其有jsp元素,那么标签会先解释,然后将元素的实际值传入。

比如标签体里含有<%=attributeName%>这样子的jsp元素,此时标签会按attributeName的实际值是什么就传入什么。

这个是最常用的一个。

empty 标签体必须为空在引用这个Tag的时候,可以<bean:writebundle="attributeName" />,而不必<bean:writebundle="attributeName" ></bean:write>tagdependent 由标签解释,不带jsp转换<attribute> </attribute>这里标识的是这个Tag的一个参数<name>bundle</name>这个参数的名字<required>false</required>这个参数是否是必填相如果为true则必须写这个参数,否则会报错<rtexprvalue>true</rtexprvalue>是说这个标签的值可以写入rtexprvalue:"RUN-TIME EXPRESSION VALUE",是否可以动态赋值,在jsp中如value="<%=attributeName%>"。

struts2jsp页面使用s:if标签

struts2jsp页面使用s:if标签

struts2jsp页⾯使⽤s:if标签在jsp页⾯使⽤s:if来判断和使⽤s:date来格式化时间显⽰⽅式1 <s:if test="jobChangeList.size()>0">2 <s:iterator value="j obChangeList">3 <tr>4 <td>5 <s:if test="employeetype==0">正式员⼯ </s:if>6 <s:elseif test="employeetype==1">外包 </s:elseif>7 <s:elseif test="employeetype= =2">实习⽣</s:elseif>8 <s:else></s:else>9 </td>10 <td> 11 <s:if test="dimission==1 ">在职 </s:if>12 <s:elseif test="dimission==2">离职 </s:elseif>13 </td>14 </tr>15 </s:iterator>字符<s:iterator value="adboardDOList"> 页⾯直接遍历action提供的数据 <td class="align-center"> <s:if test='stat us == "P"'> <span class="c-ok">审核通过</span> </s:if> <s:elseif test='status == "W" '> 待审核 </s:elseif> <s:elseif test='status=="R"'> <span class="c-warn ">审核拒绝</span> <span class="icon icon-warning" title="<s:property value='comments'/>"></span> </s:elseif> </td>注意这⾥如果status类型是字符串类型在if中外层⽤的是单引号⾥⾯⽤双引号串类型1 <s:set name="age" value="61"/> 页⾯通过set赋值同时在页⾯上判断2 <s:if test="${age > 60}">3 ⽼年⼈4 </s:if>5 <s:elseif test="${age > 35}">6 中年⼈7 </s:elseif>8 <s:elseif test="${age > 15}" id="wawa">9 青年⼈10 </s:elseif>11 <s:else>12 少年13 </s:else>14 2 从后台数据库中取出值通过对对象传到页⾯ 15 <s:i f test="psInfoDO.employeetype==0">正式员⼯ </s:if>16 <s:elseif test="psInfoDO.employeetype==1">外包 </s :elseif>17 <s:elseif test="psInfoDO.employeetype==2">实习⽣</s:elseif>18 319 <s:set name="name" value="< %="'"+ request.getParameter("name")+"'" %>"/>20 <%21 System.out.println(request.getParameter("name"));22 %>23 <s:if test="#name=='zhaosoft'">24 zhaosoft here25 </s:if>26 <s:elseif test="#name=='zxl'">27 zxl her e28 </s:elseif>29 <s:else>30 other is here 31 </s:else>。

jstl if else用法

jstl if else用法

jstl if else用法JSTL(JSP标准标签库)是一组JSP自定义标签,用于简化JSP页面中的逻辑处理和数据显示。

在JSTL中,可以使用if-else标签来实现条件判断。

以下是if-else标签的用法:1. 导入JSTL库:在JSP页面中,需要先导入JSTL库,以便使用标签库中的标签。

可以使用以下语句导入JSTL库:```<%@ taglib prefix="c" uri="/jsp/jstl/core" %> ```2. 使用if-else标签:在JSP页面中,可以使用<c:if>标签来实现条件判断。

它的语法如下:```<c:if test="${条件表达式}"><!-- 此处为满足条件时的内容 --></c:if>```其中,`${条件表达式}`为需要判断的条件表达式,如果条件表达式为真,则执行if标签内的内容。

除了<c:if>标签,还可以使用<c:choose>和<c:when>标签来实现条件判断。

它们的语法如下:```<c:choose><c:when test="${条件表达式}"><!-- 此处为满足条件时的内容 --></c:when><c:otherwise><!-- 此处为条件不满足时的内容 --></c:otherwise></c:choose>```其中,可以有多个<c:when>标签,用于判断多个条件。

例如,以下示例代码展示了如何使用if-else标签判断变量num 的值是否大于10:```<c:if test="${num > 10}"><p>${num}大于10</p></c:if><c:if test="${num <= 10}"><p>${num}小于等于10</p></c:if>```通过使用if-else标签,可以根据条件来展示不同的内容,实现页面上的动态逻辑处理。

JSP语法(Tablib指令)

JSP语法(Tablib指令)

JSP语法(Tablib指令) Taglib 指令 定义⼀个标签库以及其⾃定义标签的前缀。

JSP 语法 <%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %> 例⼦ <%@ taglib uri="" prefix="public" %> <public:loop> . . </public:loop> 描述 % @ taglib %指令声明此JSP⽂件使⽤了⾃定义的标签,同时引⽤标签库,也指定了他们的标签的前缀。

这⾥⾃定义的标签含有标签和元素之分。

因为JSP⽂件能够转化为XML,所以了解标签和元素之间的联系很重要。

标签只不过是⼀个在意义上被抬⾼了点的标记,是JSP元素的⼀部分。

JSP元素是JSP语法的⼀部分,和XML⼀样有开始标记和结束标记。

元素也可以包含其它的⽂本、标记、元素。

⽐如,⼀个jsp:plugin元素有jsp:plugin开始标记和/jsp:plugin结束标记,同样也可以有jsp:params和jsp:fallback元素。

你必须在使⽤⾃定义标签之前使⽤% @ taglib %指令,⽽且你可以在⼀个页⾯中多次使⽤,但是前缀只能使⽤⼀次。

属性 uri="URIToTagLibrary" Uniform Resource Identifier (URI)根据标签的前缀对⾃定义的标签进⾏惟⼀的命名,URI可以是以下的内容: Uniform Resource Locator(URL),由RFC 2396定义,查看。

Uniform Resource Name(URN),由RFC 2396定义。

⼀个相对或绝对的路径 prefix="tagPrefix" 在⾃定义标签之前的前缀,⽐如,在中的public,如果这⾥不写public,那么这就是不合法的。

JSP课件-11自定义标签

JSP课件-11自定义标签

doEndTag()
EVAL_BODY_AGAIN 或 EVAL_BODY_BUFFERED SKIP_PAGE
计算JSP页面 中剩余内容
从当前JSP 页面中返回
TagSupport类与 类与BodyTagSupport类 类与 类
IteratorTag接口在实现上有很多方法需要我们自 接口在实现上有很多方法需要我们自 己手写实现,其实有TagSupport这个子类,我们 这个子类, 己手写实现,其实有 这个子类 来进行编程更加方便! 来进行编程更加方便! BodyTag接口也有一个实现类:BodyTagSupport, 接口也有一个实现类: 接口也有一个实现类 在实际开发过程中我们往往使用自定义类继承这 两个子类来实现. 两个子类来实现. 规范中, 在JSP2.0规范中,我们还有两个新的成员: 规范中 我们还有两个新的成员:
开发自定义标签
.java tld Web.xml JSP
自定义标签的两个重要的组成部分: 自定义标签的两个重要的组成部分:标签描述文 件(tld)和标签处理程序(.java) )和标签处理程序( )
标签处理程序是执行业务逻辑的 Java类 类 容器在编译自定义标签的时候, 当JSP容器在编译自定义标签的时候,根据 文件就可 容器在编译自定义标签的时候 根据tld文件就可 以找到真正实现业务功能的标签处理程序. 以找到真正实现业务功能的标签处理程序.这时标签处 理程序,得到JSP传递过来的信息,进行业务计算后, 传递过来的信息, 理程序,得到 传递过来的信息 进行业务计算后, 将结果用网页的形式在页面上显示出来. 将结果用网页的形式在页面上显示出来.
总结
自定义标签在 JSP 页面中嵌入少量的 Java 代码 标签格式. 自定义标签遵循标准 HTML 标签格式. 可以通过创建 Java 类或创建标签文件来实现自定 义标签 类文件实现的自定义标签, 使用 Java 类文件实现的自定义标签,需要标签处 理程序和标签库描述符文件 类文件实现的自定义标签, 用 Java 类文件实现的自定义标签,必须扩展或实 现 javax.servlet.jsp.tagext 包

自定义标签编写步骤

自定义标签编写步骤

概括地说,自定义标签编写包括四个步骤:1.编写标签处理类2.编写标签描述tld文件3.配置web.xml文件4.在jsp页面中声明并调用标签编写标签处理类1)放在一个包中,即package **;2)导入必要的包:import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.*等。

3)在编译标签处理类时,须将jsp-api.jar(位于tomcat的common\lib 目录下)文件加入到classpath中标签描述文件tld文件由一系列元素组成,涉及的元素很多,其中必需的元素有:<taglib>:根元素<tlib-version>:标签库版本号<uri>:标签库唯一uri的元素<tag>:描述每个标签处理器及属性的元素以下是<tag>标签下的元素:<name>:与标签库名字前缀一起使用的标签名字<tag-class>:标签处理类的名称,包括包的名字<body-content>:描述标签处理器使用标签体的方式<attribute>:描述相关属性信息配置web.xml文件作用:声明标签库引用<taglib><taglib-uri>与tld文件中的uri一致</taglib-uri><taglib-location>tld文件的路径</taglib-location></taglib>在jsp页面中声明并调用1)<%@taglib uri=”与tld文件中的uri一致”prefix=”使用时的前缀名字”%>2)使用格式:<前缀名字:tag名字相关属性赋值>程序举例(实现简单的文本框)java程序:package tags;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;public class Textbox extends TagSupport{private String lable="";private String name="";private String value="";private String maxlength="20";public void setLable(String lable){ble=lable;}public void setName(String name){=name;}public void setValue(String value){this.value=value;}public void setMaxlength(String maxlength){this.maxlength=maxlength;}public int doStartTag(){try{JspWriter out=pageContext.getOut();out.print("<label>"+lable+"</label>");out.println("<input value='"+value+"' name='"+name+"' size='"+maxlength+"' id='textbox' >"); }catch(Exception e){System.out.println("failed");}return EVAL_BODY_INCLUDE;}}tld文件:<?xml version="1.0" encoding="ISO-8859-1" ?><taglib xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0</tlib-version><uri>/mytag</uri><tag><name>textbox</name><tag-class>tags.Textbox</tag-class><body-content>empty</body-content><attribute><name>lable</name><required>false</required></attribute><attribute><name>name</name><required>true</required></attribute><attribute><name>value</name><required>true</required></attribute><attribute><name>maxlength</name><required>false</required></attribute></tag></taglib>web文件<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee web-app_2_4.xsd"version="2.4"><taglib><taglib-uri>/mytag</taglib-uri><taglib-location>/WEB-INF/tlds/tag.tld</taglib-location></taglib></web-app>jsp页面<%@page contentType="text/html;charset=gb2312"%><%@taglib uri="/mytag" prefix="my"%><html><head><title>jsp自定义标签的简单使用实例</title></head><body><my:textbox lable="用户名:" name="username" value="" /><br><my:textbox lable="密&nbsp;&nbsp;码:" name="username" value="" /> </body></html>。

JSP taglib指令

JSP  taglib指令

JSP taglib 指令<% @ taglib %>指令声明此JSP 文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。

首先要开发自己的标签库(taglib ),为标签库编写配置文件(以.tld 为后缀的文件),然后在JSP 页面中使用该自定义标签。

然后,通过该指令使用用户自定义标签。

这样增加了代码的重用程度,提高了开发效率。

这里自定义的标签含有标签和元素之分。

因为JSP 文件能够转化为XML ,所以了解标签和元素之间的联系很重要。

实际上,标签只是一个在意义的标记,是JSP 元素的一部分。

JSP 元素是JSP 语法的一部分,和XML 一样有开始标记和结束标记。

元素也可以包含其它的文本、标记和元素。

和标签库,prefix 表示在JSP 页面里引用这个标签的前缀,这些前缀不可以是jsp 、jspx 、java 、javax 、sun 、servlet 和sunw 等。

1.实现标签行为实现标签行为是将scriptlet 代码从原先所在的地方移到一个Java 类中,也就是创建一个Java 类的JavaBean 或者Servlet 文件,用于处理数据内容。

文件名:Tag.javaJSTL (JSP Standard Tag Library ,JSP 标准标签库)是一个不断完善的开放源代码的JSP 标签库,是由apache 的jakarta 小组来维护的。

JSTL 只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x 。

在JSP 2.0中也是作为标准支持的。

类。

然后,再创建一个doEndTag( )方法,并在该方法中通过“pageContext.getOut().println()”语句在页面中输入文本内容。

TagSupport类主要是标签处理类是否需要与标签体交互,如果需要交互的就用TagSupport,否则如果不需要交互就用BodyTagSupport。

多种方法实现当jsp页面完全加载完成后执行一个js函数

多种方法实现当jsp页面完全加载完成后执行一个js函数

多种⽅法实现当jsp页⾯完全加载完成后执⾏⼀个js函数如下程序,当页⾯完全加载后执⾏openTheIndexPage()⽅法复制代码代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>Telecommunications Data Collection System</title><script type="text/javascript" src="<%=contextPath%>/js/baseframe.js"></script><script type="text/javascript" src="<%=contextPath%>/js/cookies.js"></script><script type="text/javascript" src="<%=contextPath%>/js/tag/tag.js"></script><script language="javascript" for="window" event="onload">function openTheIndexPage() {openMyURIWithCid(true, 'root', 'IDX', "iframe/dispatch.jsp?url=tdc/zhk/impctrlobjinf/index/index.jsp", '⾸页','top.tagmenu', 'top.maintop', true,'system/accessPaths.do?currentModuleCode=IDX','mainmenu', true);};if(document.readyState=="complete"){openTheIndexPage();}</script></head><body></body></html>:可以是以下⼏种,但是效果不如⽅法1.复制代码代码如下:<body onload="function name()"> </body ><script>window.onload=function name </script><script language="javascript" for="window" event="onload">function name(); </script>第⼆种只能写⼊⼀个函数,⽽且⽆法给变量,其中最好⽤的是最后⼀种,可以独⽴写出来,怎么写都⾏。

JSP中自定义标签的实现与部署

JSP中自定义标签的实现与部署
科技信息
0I 技术论坛 0 T
SIN E E H O O YIF R A I N CE C &T C N L G O M TO N
20 08年
第 2 期 3
J P中 自定义标签的实现与部署 S
周 建 儒
( 川信息 职 业技术 学 院 四川 广元 四
【 摘
681) 2 0 7
2 自定 义 J . SP标 签 的 处 理 过 程
时 , 别 出 自定 义标 签 。 识 2在 JP文 件 中使 用 自定 义 标 签 。 . S
T g aa命 令 编 译 此 jv j aa文 件 ,将 编 译 后 的 M T g ls 件 必 须 y a .as文 c 1在 JP中 引 入 标 签 库 , JP引 擎 标 识 JP页 面 中 tgb命 令 My a.v . S 当 S S al i 放 在 m tg文 件 夹 中 。 ya 3 b容 器 根 据 J P文 件 中 的 pei 性 的 值 ,获 得 标 签 库 中 . We S rf x属
2安 装 T mct 务 器 (o a5O . o a服 T mct.)
C: r g a F l s p c e S fwa e F u d to \ o a . \ o r m ie  ̄ a h o P t r o n a in T mc t5 0
Sr gs Q ey ” e c a—d a des uhr sa =‘T’ ; t n t ur= Sl t u i, d rs, tos tt U ; i r e a e ” s t: o nc. etSae n0 t e cn et rae t met; a c t R sh e rsl =s t. eue ur(r ur) eu St eut t e x etQ eys Q ey; a e t w i ( shn x0 hl r u . t) ee e
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jsp自定义标签实例
JSP自定义标签。

在自定义标签的起始和结束标签之间的部分为标签体(Body)。

标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。

标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。

tag标签相关属性:实现简单标签处理程序标签处理程序是一个在运行时调用的Java类,它包含在JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。

最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例:其实对自定义标签已经早有接触了(Struts中使用了很多自定义标签,如html、bean等)使用这种技术的优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。

实现步骤:
首先启动eclipse,新建一个web项目(废话...)
1、修改web.xml文件,增加自定义标签支持。

Java代码
2、创建标签库TLD文件tlds\helloworld.tld 。

Java代码
这里注意:web.xml和xxx.tld这两个XML文件的头信息的版本匹配很重要,否则会导致页面报错找不到标签。

3、创建标签处理程序类HelloWorldTag(重写doStartTag和doEndTag方法)。

Java代码
补充:
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与
SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字。

doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页。

doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与
SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。

EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用。

EVAL_PAGE:继续处理页面,doEndTag()函数可用。

SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用。

SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用。

EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法。

EVAL_BODY_AGAIN:请求继续处理body,返回自doAfterBody(),这个返回值在你制作循环tag的时候是很有用的。

预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE。

如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:doStartTag() ->不显示文字->doEndTag()->执行接下来的网页。

如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页。

4、最终测试页面hello.jsp 。

Java代码
实例完成,HelloWorld再现江湖!!!。

相关文档
最新文档