自定义标签的开发
- 格式:ppt
- 大小:778.50 KB
- 文档页数:71
JSP自定义标签的实现过程来源:2009年02月18日10:12网友评论:0条点击:5602001年接触jsp,当时标签库、N层结构开发、设计模式等j2ee的思想还刚刚萌芽,每个jsp文件就是纯粹的java嵌入代码、javascript、html的混杂,以实现功能为第一要务。
2003年首次接触taglib,对apache组织上的jstl略有了解,但没有真正在项目中使用。
随着struts的流行,jstl的风头已经被盖过,但据说core这个jstl中的标签库使用的还是很多。
本次基于学习的目的,重新体验了一下自定义标签的实现过程。
做一个最简单的自定义标签<mytag:hello/>,效果是打印hello world!1、编写标签处理类HelloTag(实现javax.servlet.jsp.tagext.Tag类)package cn.itcast.tag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.Tag;public class HelloTag implements Tag {private PageContext pageContext;private Tag tag;public int doEndTag() throws JspException {try {pageContext.getOut().print(\"hello world!\");} catch (IOException e) {e.printStackTrace();}return Tag.EVAL_PAGE;}public int doStartTag() throws JspException {return Tag.SKIP_BODY;}public Tag getParent() {return null;}public void release() {}public void setPageContext(PageContext arg0) {this.pageContext = arg0;}public void setParent(Tag arg0) {this.tag = arg0;}}注意Tag中定义的几个常量的含义(EVAL_PAGE,SKIP_BODY等)2、编写hellotag.tld标签定义文件<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE taglibPUBLIC \"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN\"\"/dtd/web-jsptaglibrary_1_2.dtd\"><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>tagSample</short-name>[Page]<uri>/hellotag</uri><tag><name>hello</name><tag-class>cn.itcast.tag.HelloTag</tag-class><body-content>empty</body-content></tag></taglib>3、编写测试jsp文件<%@ page contentType=\"text/html; charset=GBK\" %><%@ page errorPage=\"error.jsp\" %><%@ taglib uri=\"/WEB-INF/hellotag.tld\" prefix=\"mytag\" %><html><head><title></title></head><body><mytag:hello/><mytag:hello>haha</mytag:hello></body></head>测试结果应该是打印出两个hello world!标签库的优点1、最大限度地消除jsp页面中嵌入的java代码2、增强代码扩展性、可读性、代码复用,简化了jsp页面编写的工作量。
VSCode代码片段自定义标签代码片段是提高编码效率的重要工具,在开发过程中能够快速生成常用的代码块,减少重复劳动。
VSCode(Visual Studio Code)作为一款流行的源代码编辑器,提供了丰富的功能和插件,其中之一就是代码片段。
默认情况下,VSCode提供了一些常用的代码片段,例如HTML、CSS和JavaScript等。
但有时候默认的代码片段不能满足开发者的需求,需要自定义代码片段。
自定义代码片段需要为代码片段文件指定特定的语言ID,并使用一种特殊的语法来描述代码片段的内容。
本文将介绍如何在VSCode中自定义代码片段的标签。
在VSCode中,代码片段使用JSON文件的格式进行定义。
为了使代码片段与其他片段区分开来,每个代码片段都需要一个唯一的标识。
这个标识通常由语言ID和代码片段的名称组成。
以下是一个示例代码片段的定义:```json{"helloWorld": {"prefix": "hw","body": ["console.log('Hello, World!');"],"description": "Prints 'Hello, World!' to the console."}}```在上述示例中,代码片段的标识为`helloWorld`,它有一个唯一的前缀`hw`。
在编辑器中输入`hw`,然后按下Tab键,代码片段将会被插入到文档中。
这段代码片段的内容是一个可以输出`Hello, World!`到控制台的JavaScript语句。
通过在JSON文件中定义多个代码片段,我们可以将常用的代码块进行组织和管理。
这样可以大大提高编码效率,减少繁琐的输入。
以下是一个更复杂的示例代码片段定义:```json{"forLoop": {"prefix": "fl","body": ["for (let ${index} = 0; ${index} < ${array}.length; ${index}++) {","\tconst ${element} = ${array}[${index}];","\t$0","}"],"description": "Creates a basic for loop."}}```上述示例代码片段定义了一个名为`forLoop`的代码片段,它的前缀是`fl`。
一、概述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自定义标签的开发与应用在JSTL提供了四个标签库(核心标签库、国际化标签库、数据库标签库和XML标签库),涉及到了几十个标签。
虽然这些标签可以完成比较复杂的工作,但它们仍然无法满足程序中的特殊需求。
因此,就需要用户根据自己的需要来定制JSP标签,这种由用户自己实现的JSP标签被称为自定义标签。
.1 自定义标签基础自定义标签和JSTL中的标签从技术上看没有任何区别,可以将这些标签统称为JSP标签。
JSP标签在JSP页面中通过XML语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执行相应的Java代码。
也就是说,JSP标签实际上就是调用了某些Java 代码,只是在JSP页面中以另外一种形式(XML语法格式)表现出来。
1.1 编写输出随机数的标签开始自定义标签的学习之前,在这一节先来实现一个简单的自定义标签,以使读者做一下热身,同时读者通过本节的例子可以对自定义标签的实现方法和过程有一个感性的认识。
【实例1-1】实现输出随机数的标签1. 实例说明在本例实现的自定义标签(random标签)的功能是输出一个指定范围的随机整数。
random 标签有如下几个特征:没有标签体。
有两个属性:min和max。
其中min属性表示生成随机数的最小值,max属性表示生成随机数的最大值。
min属性的默认值是0,max属性的默认值是Integer.MAX_V ALUE。
生成随机数的范围是min <= random < max。
random标签的标准调用形式如下:<ct:random min="1" max="100" />其中“ct”是调用标签时的前缀,通过taglib指定的prefix属性指定。
上面的代码的功能是输出一个在1(包括)和100(不包括)之间的随机数。
2. 编写标签类标签类是自定义标签的核心部分。
实现标签类的方法有很多,但最简单的方法是编写一个从javax.servlet.jsp.tagext.TagSupport类继承的Java类,并在该类中覆盖TagSupport类的doStartTag方法。
javaweb——jsp自定义标签开发入门一、自定义标签的作用自定义标签主要用于移除Jsp页面中的java代码。
二、自定义标签开发和使用2.1、自定义标签开发步骤1、编写一个实现Tag接口的Java类(标签处理器类)复制代码1package me.gacl.web.tag;23import java.io.IOException;45import javax.servlet.http.HttpServletRequest;6import javax.servlet.jsp.JspException;7import javax.servlet.jsp.JspWriter;8import javax.servlet.jsp.PageContext;9import javax.servlet.jsp.tagext.Tag;1011public class ViewIPTag implements Tag{1213//接收传递进来的PageContext对象14private PageContext pageContext;1516@Override17public int doEndTag()throws JspException{18System.out.println("调用doEndTag()方法");19return0;20}2122@Override23public int doStartTag()throws JspException{24System.out.println("调用doStartTag()方法");25HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();26JspWriter out=pageContext.getOut();27String ip=request.getRemoteAddr();28try{29//这里输出的时候会抛出IOException异常30out.write(ip);31}catch(IOException e){32//捕获IOException异常后继续抛出33throw new RuntimeException(e);34}35return0;36}3738@Override39public Tag getParent(){40return null;41}4243@Override44public void release(){45System.out.println("调用release()方法");46}4748@Override49public void setPageContext(PageContext pageContext){50System.out.println("setPageContext(PageContext pageContext)");51this.pageContext=pageContext;52}5354@Override55public void setParent(Tag arg0){5657}5859}复制代码2、在WEB-INF/目录下新建tld文件,在tld文件中对标签处理器类进行描述gacl.tld文件的代码如下:复制代码1<?xml version="1.0"encoding="UTF-8"?>23<taglib xmlns="/xml/ns/j2ee"4xmlns:xsi="/2001/XMLSchema-instance"5xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"6version="2.0">7<!--description用来添加对taglib(标签库)的描述-->8<description>孤傲苍狼开发的自定义标签库</description>9<!--taglib(标签库)的版本号-->10<tlib-version>1.0</tlib-version>11<short-name>GaclTagLibrary</short-name>12<!--13为自定义标签库设置一个uri,uri以/开头,/后面的内容随便写,如这里的/gacl,14在Jsp页面中引用标签库时,需要通过uri找到标签库15在Jsp页面中就要这样引入标签库:<%@taglib uri="/gacl" prefix="gacl"%>16-->17<uri>/gacl</uri>1819<!--一个taglib(标签库)中包含多个自定义标签,每一个自定义标签使用一个tag标记来描述-->20<!--一个tag标记对应一个自定义标签-->21<tag>22<description>这个标签的作用是用来输出客户端的IP地址</description>23<!--24为标签处理器类配一个标签名,在Jsp页面中使用标签时是通过标签名来找到要调用的标签处理器类的25通过viewIP就能找到对应的me.gacl.web.tag.ViewIPTag类26-->27<name>viewIP</name>28<!--标签对应的处理器类-->29<tag-class>me.gacl.web.tag.ViewIPTag</tag-class>30<body-content>empty</body-content>31</tag>3233</taglib>复制代码2.2、在Jsp页面中使用自定义标签1、使用"<%@taglib uri="标签库的uri"prefix="标签的使用前缀"%>"指令引入要使用的标签库。
1.1带标签体的标签并且对标签体进行处理的自定义标签开发实例1、如果需要处理标签对间的信息---带标签体的标签并且对标签体进行处理例(1)编程要点1)此时应该在标记Java程序类中同时重载doStartTag()和doEndTag()方法,上面的两个标签分别调用这两个方法。
并且可以实现IterationTag接口的doAfterBody()方法;2)而如果要求将“这是成对的标签正文内容”字符串原样输出,则应该注意的是在doStartTag()中需要返回return(EV AL_BODY_INCLUDE)表示要求计算标签体正文内容,而不是return(SKIP_BODY)表示跳过标签体正文内容;或者EV AL_BODY_BUFFERED(当你想使用BodyContent);3)而doEndTag()需要return(EV AL_PAGE)表示要求容器在标签结束时继续计算JSP页面其他的部分。
4)doAfterBody方法在标记体执行后被调用。
象doStartTag一样,doAfterBody必须返回指示,确定是否需要继续执行标记体。
如果需要再次执行标记体,返回EV AL_BODY_BUFFERED,否则doAfterBody返回SKIP_BODY2、编写该类型的标签处理程序的JAVA类文件,可以将标签类继承BodyTagSupport类,并重写doAfterBody()方法。
(1)添加一个类,名称为JSPTagTest3,包名称为jsptaglib,基类为javax.servlet.jsp.tagext.BodyTagSupport(2)对该JavaBean进行编程并重写doAfterBody()方法(3)编程该JavaBean以使用标签体的正文内容/*在JCreator中编译该程序时要注意:由于在JDK.14中并没有包含javax.servlet.jsp.*、javax.servlet.jsp.tagext.*等包,应该在JCreator中引入这些包,这些包可以从Tomcat\common\lib\jsp-api.jar和servlet-api.jar文件*/package jspTagLib;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import java.io.*;/*继承BodyTagSupport类的主要目的是能够处理标签的正文内容,否则应该继承TagSupport类*/public class JSPTagTest3 extends BodyTagSupport{private String tagproperty="属性的缺省值";public int doStartTag() throws JspTagException //程序的执行起始点{try{/*out是一个JspWriter类型的隐含对象,用于向jsp网页输出内容。
利用Word制作标签在日常工作和生活中,我们经常需要使用各种标签,如文件标签、物品标签、邮寄标签等。
利用Word软件可以轻松制作出符合自己需求的标签。
本文将介绍如何使用Word制作标签,帮助您提高工作效率和美化标签的外观。
一、准备工作在开始制作标签之前,首先需要明确标签的尺寸、形状和样式。
一般情况下,标签的尺寸和形状可以根据实际需要进行设置。
Word提供了多种预设的标签尺寸和形状供选择,也可以自定义标签尺寸。
另外,还可以选择合适的字体、字号、颜色和样式,以便使标签更加美观和易识别。
二、选择标签尺寸和形状在Word软件中,选择“邮件ings”选项卡,点击“标签”的按钮,弹出一个标签对话框。
在对话框中,可以选择各种预设的标签厂商和标签型号。
如果没有合适的预设选项,可以点击“新建标签”按钮,自定义标签尺寸和形状。
三、设置标签内容在标签对话框中,可以设置标签的内容。
如果需要批量制作相同内容的标签,可以在“地址”栏中输入需要的文本内容。
这里可以利用Word的文本编辑功能,包括字体、字号、加粗、倾斜、下划线等设置,调整标签内容的样式。
标签对话框还提供了对齐方式、距离等设置,可以根据实际需求进行调整。
四、打印标签设置好标签内容后,点击“打印”按钮,弹出打印对话框。
在对话框中,可以选择打印机和打印设置,如纸张大小、打印方向等。
点击“打印”按钮,即可开始打印标签。
五、其他技巧和注意事项1. 标签打印时,可以选用特殊的标签纸,以保证打印质量和效果。
2. 如果需要打印不同内容的标签,可以在Word中创建数据源文件,以便批量打印不同内容的标签。
3. 在打印过程中,可以预览每个标签的效果,以确保打印正确无误。
4. 可以保存标签模板,以便今后再次使用或修改。
总结:通过Word软件,我们可以轻松制作出符合需求的标签,提高工作效率和美化标签的外观。
根据实际需要选择标签尺寸和形状,设置标签内容并根据需求进行调整,最后通过打印完成标签制作。