JavaEE自定义标签(DOC)

合集下载

J2EE JSP自定义标签技术及应用实例

J2EE JSP自定义标签技术及应用实例
JSP标签在进行开发时要比JavaBean复杂很多,体现在JSP标签
库描述文件(*.tld)和web.xml等的配置上; JSP标签实现的功能相对比较单一,同时不及 JavaBean编程方便。
(4)标签库的应用场合
对由“美工和程序员”所构成的开发团队,在表示层中则 更多地采用标签技术
5、对标签的处理过程说明
6、定制标签的编程实现步骤
(1)设计标签所对应的功能处理的JavaBean类
它是标签库用来执行所分配任务的基础代码模块
(2)编写标签库所需要的描述符(TLD)文件
这是一种XML文件,TLD文件描述和说明了标签的属性、
信息和标签处理器的Java类文件位置等信息。 JSP 容器使用这一文件来映射被调用标签库的位置和用 法。
(2)编写标签库描述符TLD文件(Tag Library Descriptor,文件扩展名为*.tld) (3)修改WEB-INF目录下的web.xml文件以定位标签的 *.tld文件(对JSP2.0技术可以不需要它) (4)在JSP页面中使用以上自定义的标记
9、标签的内部转换机制
(1)应用服务器容器首先调用JSP引擎把JSP页面翻译成对应的 Servlet,然后再编译该Servlet。 (2)与标记库相关联的方法都被包含在该Servlet中并一起编译, 合成在一起
BodyTagSupport类并重写doStartTag方法
一个标签能接受输入参数,只需要在该标签所对应的 Java类程序
中增加setXXX()方法即可,其中xxx为该标签的属性名称
修改*.tld文件 编写标签库描述符TLD文件并在tag之间加入 <attribute>标签
12、成对的标签并且不需要处理标签对间的信息 <userTag:JSPTagTest >这是成对的标签正文内容 </userTag:JSPTagTest> 设计要点

JAVA操作WORD可操作书签

JAVA操作WORD可操作书签
// 书签处值结束 if (entry.getKey().equals(bookMarkName)) {
Element node = (Element)
oldBookStart.getNextSibling();// 获取兄弟节点w:r
// 如果书签处无文字,则在书签处添加需要替换的内
容,如果书签处存在描述文字,则替换内容,用w:r NodeList wtList =
TransformerException, TransformerConfigurationException {
// 使用java.util打开文件
File file=new File("D:test.docx"); boolean exist=file.exists(); boolean read=file.canRead(); boolean write=file.canWrite(); System.out.println(exist); System.out.println(read); System.out.println(write); ZipFile docxFile = new ZipFile(file);
现在新建一个 word,在请输入用户名处添加书签 userName,请输入年龄处添加书签 age
Word2007 版本其实就是 zip 格式,将新建 word 后缀名改.zip,解压会发现,里面全是文 件夹,打开 word 文件夹会有一个 document.xml 文件,在 word 所有内容,都在这 xml 文件中,
node.getElementsByTagName("w:t");// 获取w:r标签下的显示书签处
内容标签w:t
if (wtList.getLength() == 0) { // 如果不存

Java自定义标签用法实例分析

Java自定义标签用法实例分析

Java⾃定义标签⽤法实例分析本⽂实例讲述了Java⾃定义标签⽤法。

分享给⼤家供⼤家参考,具体如下:简单例⼦实现⼀个标签分为两步:(1)继承SimpleTagSupport或TagSupport实现⼀个控制器(2)创建⼀个描述标签的tld⽂件。

下⾯是⼀个简单例⼦:(1)实现⼀个标签控制器,向页⾯输出“hello”:public class Test extends SimpleTagSupport{public void doTag() throws IOException{JspWriter out = getJspContext().getOut();out.write("hello");}}(2)在WEB-INF⽂件夹下创建⼀个custom.tld⽂件:<?xml version="1.0" encoding="UTF-8"?><taglib version="2.0" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>my</short-name><!-- 直接显⽰hello --><tag><name>Hello</name><tag-class>com.huanle.utils.tags.Test</tag-class><body-content>empty</body-content></tag></taglib>上⾯代码通过<tag>标签描述⼀个⾃定义标签,<body-content>empty</body-content>表⽰这个标签没有标签体,也就是开始标签和结束标签之间没有内容。

Java自定义简单标签实例

Java自定义简单标签实例

Java自定义简单标签实例Java自定义简单标签实例引导语:当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签。

以下是店铺分享给大家的Java自定义简单标签实例,欢迎阅读!下面将以权限的控制为例自定义一个标签:一、标签类型步骤:1.自定义一个类PerssionTag 继承SimpleTagSupport(自定义标签一般都会继承这个类)package .liveuc.privilege.tag;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Set;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.SimpleTagSupport;import .liveuc.privilege.model.Privilege;import .liveuc.privilege.model.Resource;import .liveuc.privilege.model.Role;import er;/**** @说明自定义标签*/public class PerssionTag extends SimpleTagSupport {//自定义标签属性,用于标签传入参数private String uri;//接收标签传入的参数public void setUri(String uri) {this.uri = uri;}@Overridepublic void doTag() throws JspException, IOException {//获取用户登陆后保存的.SessionPageContext page = (PageContext) this.getJspContext(); User user = (User) page.getSession().getAttribute("login"); //如果用户登陆if(user != null) {//用户登陆判断用户权限List list = new ArrayList();//获取用户的角色Set role = user.getRole();for(Role r:role) {//获取角色对应的权限Set privilege = r.getPrivilege();for(Privilege p:privilege) {//获取权限对应的资源Set res = p.getResource();for(Resource re:res) {list.add(re.getUri());}}}for(String ur:list) {//判断用户的权限if(ur.equals(uri)) {this.getJspBody().invoke(null); //有权限输出标签体内容}}}}}2.在WEB-INF下创建tld文件描述标签。

Java自定义标签

Java自定义标签

27
ACCP V4.0
指令<%@ attribute %>
这个指令只能用于标签文件中。它声明了标签文 这个指令只能用于标签文件中。 只能用于标签文件中 件所支持的属性。 件所支持的属性。 语法 <%@ attribute name="attrName" [description ="description"] [required="true|false"] [fragment="true|fal se" | [type="attrDataType"] [rtexprvalue="true|false"]] %>
23
ACCP V4.0
24
ACCP V4.0
标签文件
标签文件是一个扩展名为.tag的文本文件,必须 存储在Web应用程序的WEB-INF/tags文件夹或其 子文件夹中。可在标签文件中使用所有的JSP元 素,但不能使用page指令 其作用类似于标签处理程序,当JSP页面遇到自 定义标签时,它会转到标签文件执行标签的定义
22
ACCP V4.0
标记处理程序示例
import java.io.*; import javax.servlet.jsp.tagext.*; public class Greeting extends TagSupport { public int doStartTag() { try {pageContext.getOut().print(“<b>Hello!</b>”);} “ ” catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } public int doEndTag() { try { pageContext.getOut().print(“<br>”); } “ ” catch (IOException e) { e.printStackTrace(); } return EVAL_PAGE; } }

自定义标签的整理(新手教程)

自定义标签的整理(新手教程)

在J2EE项目中,JSP页面常常通过在静态页面模板中嵌入scriptlets来插入动态的内容。

然而,随着复杂程序的增加,JSP页面也变得难于管理。

虽然用这种方法开发小形项目唾手可得,但是scriptlets仍然要面对下面的不利情况:Scriptlet难于阅读和修改。

带有Scriptlets的JSP 页面混合了两种语言,这使得阅读和维护变得很困难。

Scriptlets鼓励了将数据表现和逻辑处理的混合。

JSP 页面主要功能是数据表现而不是逻辑处理。

逻辑处理属于Java类的工作,他们应该由程序员维护并能够重用。

Scriptlets不能够被重用。

当scriptlets被重用时,常常是鼓励拷贝-粘贴来达到重用的效果,这是一种危险的维护方法。

每一次你拷贝-粘贴scriptlets时,将有更多行多余的代码需要维护。

Scriptlets的参数很难进行确定传递. 无论如何,绝大数人简单的拷贝,粘贴、编辑或者类似的增加,使得大部份的多余的代码需要更多的维护。

与其创建充满了scriptlets的巨大的JSP页面,不如考虑使用用户自定义标签。

用户自定义标签允许你创建、在JSP中使用你自己定义的类HTML标签。

每当JSP引擎遇到用户自定义标签时,就会自动查找标签处理类,并自动调用他。

页面中的自定义标签将会被票签处理类的输出所代替。

这就使得JSP页面不用直接在页面写Java代码,就可以指定生成动态的内容的。

用户自定义标签为你的网页设计提供了N种好处:他提高了页面代码的可读性。

页面设计人员而不是程序员,能够使用很比使用Scriptlets更容易的使用标签。

维护代码的程序员也只需个性标签库面不是JSP页面,这样他就不要再冒着破坏页面美观的风险。

在使用标签的每一处,增强或者固定的标签改变了标签了的表现。

标签比Scriptlets更容易确定参数,因为他会被作为一种属性或者在标签体内被传达。

最后,标签比Scriptlets高度的可重用性,因为你可以创建共享的、可重用的自定义标签库。

JavaEE-自定义标签

JavaEE-自定义标签

File动态属性的名 称,当设定时,将会产生一个Map类型的对象来存放属 性的名称和值 • import:同page指令中的import • pageEncoding:同page指令中的pageEncoding • isELIgnored:同page指令中的isELIgnored
Java EE讲义 讲义V1.0 讲义
Java EE讲义 讲义V1.0 讲义
4
标签处理器示例
… … … public class HelloTag extends TagSupport { public int doStartTag() throws JspException { try { pageContext.getOut().println("Hello World"); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } } … … …
Java EE讲义 讲义V1.0 讲义 6
HelloTag的TLD示例
<taglib xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/webjsptaglibrary_2_0.xsd" version="2.0"> <description>自定义标签库 <description>自定义标签库</description> 自定义标签库</description> <display-name>Custom Tag</display-name> <tlib-version>1.1</tlib-version> <short-name>c</short-name> <uri>/mytld</uri> <tag> <name>hello</name> <tag-class>demo.javaee.tag.HelloTag</tag-class> <body-content>empty</body-content> </tag> </taglib>

自定义标签使用基本步骤

自定义标签使用基本步骤

1、创建自己的.tld 标签文件(直接copy模板里的)empty表示空标签元素<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"version="2.1"><description>JSTL 1.1 core library</description><display-name>JSTL core</display-name><tlib-version>1.1</tlib-version><short-name>Mytaglib</short-name>//一组标签<uri>/jsp/jstl/core</uri><tag><name>helloTag</name>//标签名<tag-class>com.jstl.tag.Hello</tag-class>//标签处理类<body-content>empty</body-content></tag></taglib>2、web.xml 中配置标签(.tld文件可放到web 项目/WEB-INF目录下新建的tlds文件夹里)<jsp-config><taglib><taglib-uri>/hello</taglib-uri><taglib-location>/WEB-INF/tlds/hello.tld</taglib-location> </taglib></jsp-config>3、编写标签处理类,继承TagSupport类4、使用<%@taglib uri="/hello" prefix="h" %><h:helloTag/>。

自定义标签——精选推荐

自定义标签——精选推荐

⾃定义标签2 ⾃定义标签2.1 引⼊需求:向浏览器输出当前客户的IP地址(只能使⽤jsp标签)2.2 第⼀个⾃定义标签开发步骤1)编写⼀个普通的java类,继承SimpleTagSupport类,叫标签处理器类/*** 标签处理器类* @author APPle* 1)继承SimpleTagSupport**/public class ShowIpTag extends SimpleTagSupport{private JspContext context;/*** 传⼊pageContext*/@Overridepublic void setJspContext(JspContext pc) {this.context = pc;}/*** 2)覆盖doTag⽅法*/@Overridepublic void doTag() throws JspException, IOException {//向浏览器输出客户的ip地址PageContext pageContext = (PageContext)context;HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();String ip = request.getRemoteHost();JspWriter out = pageContext.getOut();out.write("使⽤⾃定义标签输出客户的IP地址:"+ip);}}2)在web项⽬的WEB-INF⽬录下建⽴itcast.tld⽂件,这个tld叫标签库的声明⽂件。

(参考核⼼标签库的tld⽂件)<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-jsptaglibrary_2_1.xsd"version="2.1"><!-- 标签库的版本 --><tlib-version>1.1</tlib-version><!-- 标签库前缀 --><short-name>itcast</short-name><!-- tld⽂件的唯⼀标记 --><uri></uri><!-- ⼀个标签的声明 --><tag><!-- 标签名称 --><name>showIp</name><!-- 标签处理器类的全名 --><tag-class>gz.itcast.a_tag.ShowIpTag</tag-class><!-- 输出标签体内容格式 --><body-content>scriptless</body-content></tag></taglib>3)在jsp页⾯的头部导⼊⾃定义标签库<%@taglib uri="" prefix="itcast"%>4)在jsp中使⽤⾃定义标签<itcast:showIp></itcast:showIp>2.3 ⾃定义标签的执⾏过程前提: tomcat服务器启动时,加载到每个web应⽤,加载每个web应⽤的WEB-INF⽬录下的所有⽂件例如。

轻松学Java Web开发之用户自定义标签

轻松学Java Web开发之用户自定义标签

release()
由标签处理类引起,来释放状态
BodyTag子接口类又重新定义了两个新方法,如表 6.4所示。
方法名 setBodyContent(BodyContent b) doInitBody() 为体中代码作初始化 为标签体中的内容设置属性 方法描述
6.1.4 标签处理器
在标签处理器中定义了标签处理方法doStartTag()和 doEndTag(),这两个方法分别在标签开始和结束时执 行处理和输出动作。这两个方法都要求分别返回一 个状态码,通知JSP容态码一共有四种,具体 作用如图6.3所示。
6.1.4 标签处理器
Tag接口类中所定义的方法如表6.3所示。
方法名 setPageContext(PageContext pc) setParent(Tag t) getParent() doStartTag() doEndTag() 设置当前页面的上下文 设置这个标签处理类的父类 获得父类 处理这个实例中的开发标签 处理这个实例中的结束标签 方法描述
web.xml文件配置
配置文件,用来描述自定义标签的TLD文件位置信息
标签库声明
使用自定义标签,首先要使用标签库声明命令进行声明
JavaBean、web.xml文件配置比较简单。以下仅对标签库 声明、标签库描述和标签处理器进行简要介绍。
6.1.2 自定义标签声明
我们在第2章中介绍过taglib指令。该指令就是当JSP 页面中引用自定义标签时,用来在页面上对自定义 标签进行声明的。taglib编译指令的作用主要是定义 一个标签库路径及其前缀。taglib指令的语法格式如 图6.2所示。
EVAL_BODY_INCLUDE 当doStartTag()返回时,指明servlet应对标签体进行评估 SKIP_BODY EVAL_PAGE SKIP_PAGE 当doStartTag()返回时,指明servlet应忽视标签体 当doEndTag()返回时,指明页面其余部分应被评估 当doEndTag()返回时,指明页面其余部分就被跳过

j2ee自定义标签(精)

j2ee自定义标签(精)

1,关于自定义标签的几个重要组成部分:继承的类:javax.servlet.jsp.tagext.*:TagSupport一个属性: protected PageContext pageContext两个方法: public int doStartTag()public int doEndTag()三个常量: SKIP_BODY,SKIP_PAGE,EVAL_PAGESKIP_PAGE,EVAL_PAGE是doEndTag()方法的返回值标签库描述文件 (*.tld)2,流程(工具:eclipse):1.新建一个web project2.在项目下新建一个包,包里建类,继承TagSupport3.完成标签处理类package demo.tag;import javax.servlet.jsp.JspException;import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.TagSupport;import java.io.*;//需要导入的几个常用的包@SuppressWarnings(\"serial\")public class TagDemo extends TagSupport ...{private int pageSize;//pageSize属性,控制页面显示的个数,并且要生成get和set方法public int getPageSize() ...{return pageSize;}public void setPageSize(int pageSize) ...{this.pageSize = pageSize;}// public int doEndTag() throws JspException {// 在这里没有用// return super.doEndTag();// }public int doStartTag() throws JspException ...{JspWriter out = pageContext.getOut();//用pageContext获取out,他还能获取session等,基本上jsp的内置对象都能获取,非常有用for (int i=0; i<pageSize; i++) ...{try ...{out.println(\"<table>\");out.println(\"<tr>\");out.println(\"<td>\"); [Page]out.println(i);out.println(\"</td>\");out.println(\"<td>\");out.println(i*10);out.println(\"</td>\");out.println(\"</tr>\");out.println(\"</table>\");} catch (IOException e) ...{e.printStackTrace();}}return SKIP_BODY;}}1. 标签处理类应该继承自TagSupport类2. 标签处理类应该覆盖父类的至少一个方法 doStartTag() 或doEndTag(),如果你覆盖是doStartTag()方法应该返回SKIP_BODY,如果你覆盖是doEndTag()方法应该返回SKIP_PAGE,EVAL_PAGE3. 充分利用标签处理类的pageContext属性,可以通过该属性获取使用自定义标签的JSP页面的各种对象:getOut(): 获取JSP页面的输出流 outgetRequest: 获取JSP页面的请求对象 requestgetSession: 获取JSP页面的会话对象 sessiongetServletContext: 获取JSP页面的应用对象 application [Page]4. 如果我们要完成一个带属性自定义标签,需要在标签处理类声明相关属性5.在WEB-INF下新建一个.tld文件完成标签库描述文件<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE taglibPUBLIC \"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN\"\"/j2ee/dtd/web-jsptaglibrary_1_2.d td\"><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>MyTagLib</short-name><tag><name>showDataTag</name><tag-class>demo.tag.TagDemo</tag-class><attribute><name>pageSize</name><required>true</required><type>Integer</type></attribute></tag></taglib>1. 标签库描述文件必须以 tld 为文件的后缀名2. 标签库描述文件应该遵守 xml 语法要求3. 标签库描述文件的根元素必须是 <taglib>4. taglib根元素下必须完成以下四个子元素tlib-version : jsp-version: short-name: 标签库描述文件的简要说明,且只能出现一次tag: 能出现一到多次 , 描述标签库中的标签名及你要对应的标签处理类5. tag元素下出现的子元素:name子元素:标签名tag-class子元素:对应的标签处理类attribute子元素:该标签应包含的属性6. attribute元素下出现的子元素:name:属性名required:该属性名可不可省略type:标签处理类中相关属性的类型5.在web.xml引入标签库描述文件<?xml version=\"1.0\" encoding=\"UTF-8\"?> [Page]<web-app version=\"2.4\"xmlns=\"/xml/ns/j2ee\"xmlns:xsi=\"/2001/XMLSchema-instance\ "xsi:schemaLocation=\"/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd\"> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><jsp-config><taglib><taglib-uri>MyFirstTag</taglib-uri><taglib-location>/WEB-INF/MyTagLib.tld</ta glib-location></taglib></jsp-config></web-app>1. 在web.xml中实现taglib元素的子元素:taglib-location: 标签库描述文件在Web应用中的相对路径<taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>taglib-uri:该标签库在JSP中用什么名字来调用<taglib-uri>abc</taglib-uri>2. 在要调用标签库的JSP中声明声明:<%@ taglib uri=\"MyFirstTag\" prefix=\"suibian\" %>调用:<suibian:showDataTagpageSize=\"10\"></suibian:showDataTag>。

Java 创建和移除Word书签

Java 创建和移除Word书签

JAVA 创建移除Word书签在使用Word文档时,有时会遇到文档篇幅较长的情况,看了一部分,可以在中间创建一个书签,下次打开Word更加方便;如果不再需要书签,可以将书签移除。

本篇文章将通过Java在Word中创建和移除Word书签。

工具使用:●Free Spire.Doc for Java 2.0.0(免费版)●IntelliJ IDEAJar包文件导入:首先,获取Free Spire.Doc for Java文件包。

Step 1:下载控件包之后解压,打开“Project Structure”界面。

(以下是三种在IDEA中快速打开Project Structure界面的方式,可选其中任意一种)Step 2:按以下操作步骤进行导入。

①选择“Modules”—“Dependencies”,添加外置jar包;②进入"Attach File or Directories"界面选择jar文件路径,然后点击“OK”;③勾选jar路径选项,点击”OK”/”Apply”;④导入完成。

如下图:JAVA代码参考示例创建书签这里提供了一个Paragraph类,该类中有两个方法appendBookmarkStart(string name)和appendBookmarkEnd(string name),用来添加书签到指定的段落,其中BookmarkStart代表书签的起始位置。

import com.spire.doc.*;import com.spire.doc.documents.*;public class createBookmark {public static void main(String[] args) {//创建Document对象Document doc = new Document()//加载Word文档doc.loadFromFile("data/Sample.docx");//获取需要添加书签的段落Paragraph paragraph = doc.getSections().get(0).getParagraphs().get(2);//添加一个开始标签并移动到段落开头BookmarkStart start = paragraph.appendBookmarkStart("我的书签");paragraph.getItems().insert(0,start);//在段落末尾添加一个结束标签paragraph.appendBookmarkEnd("我的书签");//保存文档doc.saveToFile("output/AddBookmark.docx", FileFormat.Docx_2013);}}创建结果:移除书签在该jar 包文件中,每个Word 文档都含有一个书签的集合,通过Document 类的Bookmarks 属性来访问该集合,通过该集合的FindByName(string name)方法来查找指定的书签,然后将其删除。

IDEA自定义注释模板(javadoc)

IDEA自定义注释模板(javadoc)

IDEA自定义注释模板(javadoc)自定义注释模板是一种为代码添加注释的方法,可以提供更多信息和指导,使代码更易于理解和维护。

在使用IDEA开发工具中,可以通过自定义注释模板来快速生成注释。

一、为什么需要自定义注释模板?注释是代码中的重要组成部分,可以提供代码功能和实现的说明,对于日后的维护和修改也起到了重要的指导作用。

然而,传统的注释模板往往过于简单,只能提供基本的信息,不足以满足复杂项目的需求。

因此,自定义注释模板成为了开发人员的一个需求。

二、自定义注释模板的优势1.提供更多信息:自定义注释模板可以包含更多的信息,如参数、返回值、异常等,为开发人员提供更多的指导。

2.提高代码可读性:自定义注释模板可以按照固定格式生成注释,使代码更易于阅读和理解。

3.提高开发效率:自定义注释模板可以快速生成注释,减少手动编写注释的时间。

在IDEA中,可以通过以下步骤来自定义注释模板:1. 打开IDEA的设置(Preferences)窗口,选择Editor -> Live Templates。

2. 在左侧的列表中,选择Java。

4.点击下方的“+”按钮,添加一个新的注释模板。

5. 在Abbreviation字段中输入模板的缩写,如“cmt”。

6. 在Template text字段中输入模板的内容,可以使用变量来表示参数、返回值等信息。

8. 点击“Apply”按钮保存设置。

四、自定义注释模板的示例以下是一个示例的自定义注释模板:/*** ${description}**/其中,${description}表示方法的描述,${param}表示参数,${paramDescription}表示参数的描述,${returnDescription}表示返回值的描述,${exception}表示异常,${exceptionDescription}表示异常的描述。

总结:自定义注释模板是一种提高代码可读性和开发效率的方法,在IDEA 中可以很方便地进行设置。

Javadoc标签和Javadoc注释规范说明

Javadoc标签和Javadoc注释规范说明

Javadoc标签和Javadoc注释规范说明最近看源码,⼀些Javadoc常见的注释整理下Javadoc是Sun公司提供的⼀个技术,从程序源代码中抽取类、⽅法、成员等注释形成⼀个和源代码配套的API帮助⽂档。

Javadoc命令是⽤来⽣成⾃⼰的API⽂档,使⽤⽅式:javadoc 源⽂件名.javajavadoc -d ⽂档存放⽬录源⽂件名.java通过IDEA⽣成Javadoc : Tools -> Generate JavaDocjavadoc标签标签说明@author作者标识@version版本号@return对函数返回值的描述@deprecated标识过期API(为了保证兼容性,仍可⽤,但不推荐⽤)@throws构造函数或⽅法会抛出的异常@exception同@throws@see引⽤,查看相关的内容,如类,⽅法,变量等,必须顶头写{@link 包.类#成员}引⽤,同@see,但可写在任意位置{@value}对常量注释,如果其值包含在⽂档中,通过改标签引⽤常量的值{@code}}{@code text}将⽂本标记为code,会被解析成 text } ,在Javadoc成只要涉及到类名或者⽅法名,都需要使⽤@code进⾏标记@param说明⽅法的参数@inheritDoc⽤于继承⽗类中的Javadoc,⽗类的⽂档注释,被继承到了⼦类javadoc注释规范⼀、 Java⽂档// 注释⼀⾏/ * */ 注释若⼲⾏/** ……*/ 注释若⼲⾏,写⼊Javadoc⽂档⼆、⽂档格式写在类上的⽂档标注⼀般分为三段:第⼀段:概要描述,通常⽤⼀句话或者⼀段话简要描述该类的作⽤,以英⽂句号结束第⼆段:详细描述,通常⽤⼀段或者多段话来详细描述该类的作⽤,⼀般每段话都以英⽂句号作为结束第三段:⽂档标注,⽤于标注作者,创建时间,参阅类等信息⽣成⽂档是HTML格式。

换⾏<br>分段<p>(写在段前))⽰例/*** show ⽅法的简述.* <p>show ⽅法的详细说明第⼀⾏<br>* show ⽅法的详细说明第⼆⾏* @param b true 表⽰显⽰,false 表⽰隐藏* @return 没有返回值*/public void show(boolean b) {frame.show(b);}补充:Java的三种注释 Javadoc标记*三种注释⽅法:1、单⾏注释 //注释的内容2、多⾏注释 /*......*/3、/**......*/,这种⽅式和第⼆种⽅式相似。

ch2-4 自定义标签

ch2-4 自定义标签




public class IteratorTag extends SimpleTagSupport { //标签属性,用于指定需要被迭代的集合 private String collection; //标签属性,指定迭代集合元素,为集合元素指定的名称 private String item; //collection属性的setter和getter方法 //item属性的setter和getter方法 //标签的处理方法,简单标签处理类只需要重写doTag方法 public void doTag() throws JspException, IOException {//从page scope中获取属性名为collection的集合 Collection itemList = (Collection)getJspContext(). getAttribute(collection); //遍历集合 for (Object s : itemList) { //将集合的元素设置到page 范围 getJspContext().setAttribute(item, s ); //输出标签体 getJspBody().invoke(null); } }}

……
例子:QueryTag标签定义(p113)


<tag> <!-- 定义标签名 --> <name>query</name> <!-- 定义标签处理类 --> <tag-class>lee.QueryTag</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> <!-- 配置标签属性:driver --> <attribute> <name>driver</name> <required>true</required> <fragment>true</fragment> </attribute> …… </tag>

java-doc 标准的注释

java-doc 标准的注释

java-doc 标准的注释
JavaDoc是一种用于为Java源代码编写文档的工具,它使用特
定的注释标记来识别和提取文档信息。

JavaDoc标准的注释通常以"/"开始,以"/"结束,位于类、方法、变量等声明的上方。

它们可
以包含多行注释,用于描述相关代码的功能、参数、返回值、异常
等信息。

JavaDoc标准的注释通常包括以下几个部分:
1. 摘要部分,对注释的简要描述,通常位于注释的开头。

2. 参数部分,用@param标记,描述方法的参数及其含义。

3. 返回值部分,用@return标记,描述方法的返回值及其含义。

4. 异常部分,用@throws标记,描述方法可能抛出的异常及其
含义。

5. 示例部分,提供使用示例,通常使用@code标记标识代码。

JavaDoc标准的注释可以帮助开发人员快速了解代码的功能和用法,也可以通过JavaDoc工具生成代码的文档网页,方便其他开发人员阅读和使用。

在编写Java代码时,遵循JavaDoc标准的注释规范有助于提高代码的可读性和可维护性,也是良好的编程实践之一。

java自定义标签教程

java自定义标签教程

标签扩展是一个JAVA类,它是运行一个或者二个接口的JAVABEAN。

在JSP规范内标签具有比JAVABEAN更丰富的运行时协议,因为1:初始化可以包含属性,没有这些属性标签就不能运行,而JAVABEAN的构造函数参数为空2:设置和获取属性不会涉及到所有的类,在BEAN中只有少量的逻辑控制。

3:JSP页面中的BEAN没有默认设置上下文,也就是说,BEAN没有一个父类的或者页面上下文对象的默认概念。

JSP所有的标签都实现了javax.servlet.jsp.tagext.JspTag接口。

这个接口是一个标记接口,它有二个子接口:1:一个是SimpleTag,它是JSP2.0新增加的接口,代表了简单的标签。

2:第二个是Tag接口,它是经典的,必须实现的接口,它有一个直接子接口就是IterationTag IterationTag用于开发出抚今追昔的标签,它有一个简单的实现类为TagSupport。

在开发时,我们只要从TagSupport扩展就可以开发出抚今追昔标签了。

IterationTag还有一个子接口,就是BodyTag,这种标签允许带有Body。

BodyTag也有一个实现类,就是BodyTagSupport,在开发BodyTag时,往往直接从它继承就可以了。

当然了,我们在开发自己的标签时除了继承原有的类外,也可以直实现Tag接口。

HelloWorld标签开发传统的标签必须实现javax.servlet.jsp.tagext.Tag接口,在这个接口中,主要定义的是和标签声明周期相关的方法,比如doStartTag() ,doEndTag() 等。

在Tag中,可以通过pageContext对象访问JSP页面的上下文。

下面结合标签的生命周期讨论下标签的处理过程。

JSP1.2标签的生命周期如下1:当容器创建一个新的标签实例后,通过setPageContext设置标签的页面上下文。

2:使用setParent方法设置这个标签的上一级标签。

java文档注释--javadoc标签

java文档注释--javadoc标签

java⽂档注释--javadoc标签⽬录1. ⽂档注释Java ⽂档注释(Java Doc Comments)是专门为了⽤javadoc⼯具⾃动⽣成⽂档⽽写的注释,⽂档注释与⼀般注释的最⼤区别在于起始符号是/**⽽不是/*或//。

⽂档注释只负责描述类(class)、接⼝(interface)、⽅法(method)、构造器(constructor)、成员字段(field)。

相应地,⽂档注释必须写在类、接⼝、⽅法、构造器、成员字段前⾯,⽽写在其他位置,⽐如函数内部,是⽆效的⽂档注释。

⽂档注释采⽤HTML语法规则书写,⽀持HTML标记(tag),同时也有⼀些额外的辅助标记。

需要注意的是,这些标记不是给⼈看的(通常他们的可读性也不好),可以通过Javadoc 命令把⽂档注释中的内容⽣成⽂档,并输出到 HTML ⽂件中1.1 ⽂档格式在类上的⽂档标注⼀般分为三段:第⼀段:概要描述,通常⽤⼀句或者⼀段话简要描述该类的作⽤,以英⽂句号作为结束第⼆段:详细描述,通常⽤⼀段或者多段话来详细描述该类的作⽤,⼀般每段话都以英⽂句号作为结束第三段:⽂档标注,⽤于标注作者、创建时间、参阅类等信息⽣成⽂档是HTML格式。

换⾏<br>分段<p>(写在段前))1.2 Javadoc标签Javadoc ⼯具可以识别⽂档注释中的⼀些特殊标签,这些标签⼀般以@开头,后跟⼀个指定的名字,有的也以{@开头,以}结束。

Javadoc 可以识别的标签如下表所⽰:标签描述标签类型@author作者标识包、类、接⼝@deprecated标识当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再⽤这个API包、类、接⼝、值域、构造函数、⽅法{@docRoot}指明当前⽂档根⽬录的路径@exception标志⼀个类抛出的异常构造函数、⽅法{@inheritDoc}从直接⽗类继承的注释{@link}链接到某个特定的成员对应的⽂档中包、类、接⼝、值域、构造函数、⽅法{@linkplain}插⼊⼀个到另⼀个主题的链接,但是该链接显⽰纯⽂本字体包、类、接⼝、值域、构造函数、⽅法@param⽅法的⼊参名及描述信息,如⼊参有特别要求,可在此注释构造函数、⽅法@return对函数返回值的注释⽅法@see引⽤,查看相关内容,如类、⽅法、变量等包、类、接⼝、值域、构造函数、⽅法@serial说明⼀个序列化属性@serialData说明通过writeObject( ) 和 writeExternal( )⽅法写的数据@serialField说明⼀个ObjectStreamField组件@@since描述⽂本,API在什么程序的什么版本后开发⽀持包、类、接⼝、值域、构造函数、⽅法@throws构造函数或⽅法所会抛出的异常构造函数、⽅法{@value}显⽰常量的值,该常量必须是static属性静态值域@version版本号包、类、接⼝对两种标签格式的说明:@tag 格式的标签(不被{ }包围的标签)为块标签,只能在主要描述(类注释中对该类的详细说明为主要描述)后⾯的标签部分(如果块标签放在主要描述的前⾯,则⽣成API 帮助⽂档时会检测不到主要描述)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用
1、标签
以类似于html标签的方式实现的java代码的封装。

第一:形成了开发标签的技术标准---自定义标签的技术标准。

第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl,以及表达式语言E L。

2、自定义标签
(1)理解:
可以允许用户自己根据自己的需要,去开发自己的标签的技术规范。

通俗:在Jsp页面上,以简单的标签封装java代码的操作。

//在自定义标签类中,先调用setPageContext()实例化内置对象:
//然后是doStartTag()方法,核心代码放在这个方法里面:
//定义变量,变量的Get、Set方法: private String UserName = "";
//tld配置文件放置在WEB-INF目录下,主要的标记如下,主要的配置如下:
//前面tlib-version版本号、Jsp-version JSP的版本号、short-name 命名空间、是必须有的
//uri,注意是uri而不是url,url是访问的路径。

//而uri为访问时候的别名,写在JSP页面上的标签的别名。

//name为此标签类的别名,tag-class 为标签类的存放的物理路径
//body-content 为是否有标签体,如果是/子关闭标签设置为EMPTY
//如果涉及到标签属性,可以设置attribute,其中name为属性的名称,而不是别名,required 属性是否必须设置,rtexprvalue 是否程序运行时候为属性赋值。

//如果在tld文件中不设置uri,则在web-xml中必须对talib-uri进行设置。

//在JSP页面中,用taglib指令导入自定义标签。

//JSP页面上的使用,前面my为tld文件中为标签类定义的命名空间、hello为tld文件中指定标签类的别名:
(2)技术组成
A:标签处理类:实现所有信息显示功能的Java类
B:标签配置文件(标签描述文件、库文件):是一个遵守xml规范的tld文件(扩展名为TLD)
C:配置web.xml:告诉web应用,需要引用其他的标签信息
D:jsp页面上,调用标签
3、标签的特点
(1)分类
A:成对出现的标签
B:自关闭的标签
(2)特点
A:标签必须正确的关闭
B:标签不能出现重名
C:标签可以有标签体也可以没有
D:标签可以有属性,但是一个标签不能出现同名属性最简单的标签:没有标签体也没有属性的标签
4、自定义标签的开发流程(上面的插图)
A:明确要实现的功能:要在页面显示具体什么内容B:开发标签处理类
C:创建以及配置标签描述文件:TLD文件
D:配置web.xml
E:jsp页面调用标签
5、开发标签处理类
(1)父类
一个接口两个类
接口:Tag接口javax.servlet.jsp.tagext.Tag
类:
自关闭:TagSupport
成对出现:BodyTagSupport
(2)开发标签类
集成自指定的类,重写setPageContext(),doStartTag(),doEndTag()。

重点:标签开始操作doStartTag()方法★
6、创建标签配置文件(TLD文件)
(1)作用
是用来统一管理多个标签处理类的xml文件。

(2)创建
具有自己的格式和规范的(和XML文件一样)
推荐在WEN-INF目录下,创建自己的tld文件。

(3)文件格式
A:根元素:taglib
B:taglib的四个起始子元素
<tlib-version>标签库的技术标准的版本1.0</tlib-version>
<jsp-version>支持的jsp的技术标准版本1.2</jsp-version>
<short-name>标签库文件的命名空间:缩写</short-name>
<uri>当前标签库文件的唯一标记的符号(别名)</uri>
命名空间:用来区分当前标签是属于哪个标签库的名称简写。

<jsp:useBean>
说明:uri子元素是可有可无的,但是会对后期的调用产生影响。

C:tag子元素
每个标签处理类都必须在tld文件中进行配置。

每个标签类都对应一个tag元素,描述自己的配置信息。

<tag>
<name>标签处理类的别名</name>
<tag-class>标签类的物理地址</tag-class>
<body-content>是否有标签体</body-content>
</tag>
body-content:值默认的是jsp。

如果是自关闭标签,需要制定成empty。

如果标签有属性,还有attribute子元素。

7、配置web.xml
(1)作用
在web.xml中进行标签配置文件的设置,告诉web应用程序,需要调用的自定义标签在哪里。

(2)前提
在标签配置文件中,如果没有进行<uri>的配置,则必须进行web.xml的配置。

如果已经配置了uri元素的值,就不需要进行web.xml的配置,可以直接在jsp上调用。

uri表现在JSP 页面引入标签时候,需为taglib指令指定uri,注意和TLD文件中的标签类的别名name
区分,那个是在JSP页面中调用标签时候命名空间后面写入。

(3)配置(如上图在WEB.XML中的配置)
所有的标签配置文件的配置,都必须在<jsp-config>元素中。

每个配置文件有自己<taglib>元素。

<taglib>
<taglib-location>标签配置文件的物理地址</taglib-location>
<taglib-uri>标签配置文件的调用别名</taglib-uri>
</taglib>
8、jsp调用标签
(1)引入标签库
利用taglib指令实现引入
<%@ taglib uri="标签库的别名" prefix="标签库的前缀(命名空间)"%>
uri:如果tld文件中已经配置了uri,必须与tld的uri一致。

如果tld中没有配置,必须与web.xml中的taglib-uri一致。

prefix:前缀,如果在tld文件中设置了short-name,则必须与short-name保持一致。

(2)调用标签
<前缀:标签类的别名>
(3)标签处理类的生命周期
A:加载
根据标签类的别名,定位标签处理类,加载到容器上
B:实例化
根据默认无参构造函数,进行实例化
C:设置上下文
设置页面上下文,获得内置对象
D:设置父标签
E:执行标签开始的操作
F:执行标签结束的操作
G:资源释放
9、jsp和标签处理类的信息交互方式
两种:
A:借助session属性,由jsp向标签处理类传递值
B:借助于标签的属性,实现传值。

10、属性
(1)理解
用来附加说明标签基本信息的名称与值的集合。

(2)分类
必须有的属性
可有可无的属性
(3)特点
A:是名称与值的集合
B:如果有属性,属性必有值
C:属性的值必须用引括起来
D:一个标签不允许有同名属性
(4)设置
A:在标签处理类中,创建代表属性的变量以及对应的set/get方法(见上图)。

在标签处理类中,属性是以变量的方式存在的。

B:在标签开始动作中,直接使用变量
C:在标签配置文件上,在相应的tag中,添加属性配置。

每个属性都有自己的<attribute>标签
<attribute>
<name>属性的名称(与类中变量同名)</name>
<required>属性是否是必须的(true/false)</required>
<rtexprvalue>属性的值是否通过运行时加以赋值(程序动态赋值)</rtexprvalue> </attribute>
D:jsp页面上的标签中,使用属性
注意:属性名必须与类中的变量同名。

相关文档
最新文档