ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:89.20KB ,
资源ID:19002054      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19002054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(jsp2x自定义标签文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

jsp2x自定义标签文档格式.docx

1、HelloWorld); 上面这个标签处理类非常简单,它继承了 SimpleTagSupport 父类,并重写 doTag() 方法,而 doTag() 方法则负责输出页面内容。该标签没有属性,因此无 须提供 setter 和 getter 方法。建立 TLD 文件TLD 是 Tag Library Definition 的缩写,即标签库定义,文件的后缀是 tld ,每个 TLD 文件对应一个标签库,一个标签库中可包含多个标签,TLD 文件也称 为标签库定义文件。标签库定义文件的根元素是 taglib,它可以包含多个 tag 子元素,每个 tag 子元素都定义一个标签。通常我们可以到 Web

2、容器下复制一个标签库定义文件, 并在此基础上进行修改即可。例如 Tomcat6.0,在 webappsexamplesWEB- INFjsp2 路径下包含了一个 jsp2-example-taglib.tld 文件,这就是示范用的 标签库定义文件。将该文件复制到 Web 应用的 WEB-INF/ 路径,或 WEB-INF 的任意子路径下, 并对该文件进行简单修改,修改后的 mytaglib.tld 文件代码如下:taglibxmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=web- jspt

3、aglibrary_2_0.xsd version=2.0 1.0short-namemytaglib!-定义该标签库的URI-uri/www.crazyit.org/mytaglib-定义第一个标签-tag namehelloWorld-定义标签处理类-tag-classlee.HelloWorldTag-定义标签体为空-body-contentempty/tag/taglib上面标签库定义文件也是一个标准的 XML 文件,该 XML 文件的根元素是 taglib 元素,因此我们每次编写标签库定义文件都直接添加该元素即可。taglib 下有三个子元素:tlib-version:指定该标签库实

4、现的版本,这是一个作为标识的内部版本号, 对程序没有太大的作用。short-name:该标签库的默认短名,该名称通常也没有太大的用处。uri:这个属性非常重要,它指定该标签库的 URI,相当于指定该标签库的唯 一标识。如上粗体字代码所示,JSP 页面中使用标签库时就是根据该 URI 属性来 定位标签库的。除此之外,taglib 元素下可以包含多个 tag 元素,每个 tag 元素定义一个 标签,tag 元素下至少应包含如下三个子元素:name:该标签库的名称,这个属性很重要,JSP 页面中就是根据该名称来使用 此标签的。tag-class:指定标签的处理类,毋庸置疑,这个属性非常重要,指定了标

5、签 由哪个 Java 类来处理。body-content:这个属性也很重要,它指定标签体内容。该元素的值可以是如 下几个:tagdependent:指定标签处理类自己负责处理标签体。empty:指定该标签只能作用空标签使用。scriptless:指定该标签的标签体可以是静态 HTML 元素,表达式语言,但不 允许出现 JSP 脚本。JSP:指定该标签的标签体可以使用 JSP 脚本。实际上由于 JSP 2 规范不再推荐使用 JSP 脚本,所以 JSP 2 自定义标签的 标签体中不能包含 JSP 脚本。所以实际上 body-content 元素的值不可以是 JSP 。定义了上面的标签库定义文件后,

6、将标签库文件放在 Web 应用的 WEB-INF 路 径,或任意子路径下,Java Web 规范会自动加载该文件,则该文件定义的标签库 也将生效。使用标签库在 JSP 页面中确定指定标签需要 2 点:标签库 URI:确定使用哪个标签库。标签名:确定使用哪个标签。使用标签库分成以下两个步骤:导入标签库:使用 taglib 编译指令导入标签库,就是将标签库和指定前缀关 联起来。使用标签:在 JSP 页面中使用自定义标签。taglib 的语法格式如下:%tagliburi=tagliburiprefix=tagPrefix% 其中 uri 属性确定标签库的 URI,这个 URI 可以确定一个标签库。

7、而 prefix 属性指定标签库前缀,即所有使用该前缀的标签将由此标签库处理。使用标签的语法格式如下:tagPrefix:tagNametagAttribute=”tagValue” /tagPrefix:tagName如果该标签没有标签体,则可以使用如下语法格式:tagNametagAttribute=”tagValue” /上面使用标签的语法里都包含了设置属性值,前面我们介绍的 HelloWorldTag 标签没有任何属性,所以使用该标签只需用 即可。 其中 mytag 是 taglib 指令为标签库指定的前缀,而 helloWorld 是标签名。下面是使用 helloWorld 标签的

8、JSP 页面代码:%pagecontentType=text/html;charset=GBK%-导入标签库,指定mytag前缀的标签, 由http:/www.crazyit.org/mytaglib的标签库处理-/www.crazyit.org/mytaglibmytag% htmlheadtitle自定义标签示范/headbodybgcolor=#ffffc0h2下面显示的是自定义标签中的内容-使用标签,其中mytag是标签前缀,根据taglib的编译指令, mytag前缀将由http:/www.crazyit.org/mytaglib的标签库处理- BR/body/html上面页面中第一

9、行粗体字代码指定了 http:/www.crazyit.org/mytaglib 标 签库的前缀为 mytag,第二行粗体字代码表明使用 mytag 前缀对应标签库里的 helloWorld 标签。浏览该页面将看到如图 1 所示效果:图 1. 简单标签带属性的标签前面的简单标签既没有属性,也没有标签体,用法、功能都比较简单。实际上 还有如下两种常用的标签:带属性的标签。带标签体的标签。正如前面介绍的,带属性标签必须为每个属性提供对应的 setter 和 getter 方法。带属性标签的配置方法与简单标签也略有差别,下面介绍一个带属性标签 的示例:publicclassQueryTagexten

10、dsSimpleTagSupport /标签的属性 privateStringdriver; privateStringurl; privateStringuser; privateStringpass; privateStringsql; /执行数据库访问的对象 privateConnectionconn=null; privateStatementstmt=null; privateResultSetrs=null; privateResultSetMetaDatarsmd=null; /标签属性driver的setter方法 publicvoidsetDriver(Stringdrive

11、r) this.driver=driver; /标签属性url的setter方法 publicvoidsetUrl(Stringurl) this.url=url; /标签属性user的setter方法 publicvoidsetUser(Stringuser) this.user=user; /标签属性pass的setter方法 publicvoidsetPass(Stringpass) this.pass=pass; /标签属性driver的getter方法 publicStringgetDriver() return(this.driver); /标签属性url的getter方法 pub

12、licStringgetUrl() return(this.url); /标签属性user的getter方法 publicStringgetUser() return(this.user); /标签属性pass的getter方法 publicStringgetPass() return(this.pass); /标签属性sql的getter方法 publicStringgetSql() return(this.sql); /标签属性sql的setter方法 publicvoidsetSql(Stringsql) this.sql=sql; try /注册驱动 Class.forName(dri

13、ver); /获取数据库连接 conn=DriverManager.getConnection(url,user,pass); /创建Statement对象 stmt=conn.createStatement(); /执行查询 rs=stmt.executeQuery(sql); rsmd=rs.getMetaData(); /获取列数目 intcolumnCount=rsmd.getColumnCount(); /获取页面输出流 Writerout=getJspContext().getOut(); /在页面输出表格 out.write(tableborder=1bgColor=9999cc

14、 width=400 /遍历结果集 while(rs.next() out.write(tr /逐列输出查询到的数据 for(inti=1;i out.write(rs.getString(i);/td /tr catch(ClassNotFoundExceptioncnfe) cnfe.printStackTrace(); thrownewJspException(自定义标签错误+ cnfe.getMessage(); catch(SQLExceptionex) ex.printStackTrace();+ ex.getMessage(); finally /关闭结果集 if(rs!=nul

15、l) rs.close(); if(stmt! stmt.close(); if(conn! conn.close(); catch(SQLExceptionsqle) sqle.printStackTrace();上面这个标签稍微复杂一点,它包含了 5 个属性,如程序中粗体字代码所示 ,则程序需要为这 5 个属性提供 setter 和 getter 方法。该标签输出的内容依然由 doTag() 方法决定,该方法会根据 SQL 语句查询数 据库,并将查询结果显示在当前页面中。对于有属性的标签,需要为 tag 元素增加 attribute 子元素,每个 attribute 子元素定义一个属性,a

16、ttribue 子元素通常还需要指定如下几个子元 素:设置属性名,子元素的值是字符串内容。required:设置该属性是否为不需属性,该子元素的值是 true 或 false。fragment:设置该属性是否支持 JSP 脚本、表达式等动态内容,子元素的值 是 true 或 false。为了配置上面的 QueryTag 标签,我们需要在 mytaglib.tld 文件中增加如下 配置片段:-定义第二个标签-querylee.QueryTagattributedrivertruefragment/fragment/attributeurl-urluserpasssql mytag前缀将由http

17、:query driver=com.mysql.jdbc.Driver url=jdbc:mysql:/localhost:3306/javaee user=root pass=32147 sql=select*fromnewsinf/在浏览器中浏览该页面,效果如图 2 所示。图 2. 使用带属性的标签执行查询图 2 中看到从数据库里查询到 2 条记录,当然这也需要底层 javaee 数据库 里包含 newsinf 数据表,且该数据表里包含这两条记录才行。在 JSP 页面中只需要使用简单的标签,即可完成“复杂”的功能:执行数据 库查询,并将查询结果在页面上以表格形式显示。这也正是自定义标签库的

18、目的 以简单的标签,隐藏复杂的逻辑。当然,并不推荐在标签处理类中访问数据库,因为标签库是表现层组件,它不 应该包含任何业务逻辑实现代码,更不应该执行数据库访问,它只应该负责显示 逻辑。带标签体的标签带标签体的标签,可以在标签内嵌入其他内容(包括静态的 HTML 内容和动态 的 JSP 内容),通常用于完成一些逻辑运算,例如判断和循环等。下面以一个迭 代器标签为示例,介绍带标签体标签的开发过程。一样先定义一个标签处理类,该标签处理类的代码如下:publicclassIteratorTagextendsSimpleTagSupport /标签属性,用于指定需要被迭代的集合 privateStringcollection; /标签属性,指定迭代集合元素,为集合元素指定的名称 privateStringitem; /collection属性的setter和getter方法 publicv

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1