JavaWEB——简单标签简单总结

自定义标签:

什么是自定义标签?

用户定义的一种自定义的jsp标记 。当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为
标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。

自定义标签有什么用

?自定义标签可以降低 jsp 开发的复杂度和维护量,从html 角度来说,可以使 html 不用去过多的关注那些比较复杂的商业逻辑(业务逻辑)。

?利用自定义标签,可以软件开发人员和页面设计人员合理分工:页面设计人员可以把精力集中在使用标签(HTML,XML或者JSP)创建网站上,而软件开发人员则可以将精力集中在实现底层功能上面,如国际化等,从而提高了工程生产力

?将具有共用特性的tag库应用于不同的项目中,体现了软件复用的思想。

自定义标签的开发步骤:

1.编写完成标签功能的Java类(标签处理器)

2.编写标签库描述文件(tld文件),在其中对该标签进行描述

3.在JSP页面导入并使用该标签

1.编写完成标签功能的Java类(标签处理器):

其实它就是一个Java类,只是实现了某个接口或者继承了某一个类。可以实现javax.servlet.jsp.tagext.SimpleTag接口或者

继承SimpleTagSupport该类。

若实现接口,需要实现它的若干个方法:doTag(),setParent(JspTag parent);getParent(); setJspContext(JspContext pc);setJspBody(JspFragment jspBody).其中最重要的是doTag()方法。看方法名就知道,咱们需要把该标签需要实现的功能的代码写在该方法里面。setJspContext(JspContext
pc)也很重要,它把代表JSP引擎的pageContext传给标签处理类,它先于doTag()方法。

private PageContext pageContext;
	@Override
	public void setJspContext(JspContext pc) {
		// TODO Auto-generated method stub
		this.pageContext=(PageContext) pc;

	}

有了pageContext就可以得到页面的其他8个隐含对象,如out,response,request等等,咱们就可以利用这些隐含对象去实现咱们想让它实现的功能。所以JSP页面能做的,标签都能做。

若是选择用继承SimpleTagSupport类的方法,则咱们需要重写doTag()方法。那pageContext对象去哪得到呢?翻开API,看到有个getJspContext()方法,得到JspContext对象,然后强制转型为pageContext对象即可。

比如咱们现在只需要简单的在浏览器界面上输出“hello".

doTag()方法:

public void doTag() throws JspException, IOException {
		System.out.println("doTag");
	HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();
	pageContext.getOut().println("Hello"+request.getParameter("name"));

	}

2.编写标签库描述文件(tld文件),在其中对该标签进行描述:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <!-- 描述TLD文件 -->
  <description>MyTag 1.0  core library</description>
  <display-name>MyTag core</display-name>
  <tlib-version>1.0</tlib-version>
  <!--  建议在JSP页面上使用的标签前缀-->
  <short-name>mytag</short-name>
  <!--  作为tld文件的id,用来唯一标识当前的tld 文件,多个tld文件的Uri不能重复。通过
  JSP页面的taglib 标签的Uri属性  来引用-->
  <uri>http://www.mytag.com/mytag/core</uri>

  <!-- 描述自定义的helloSimpleTag	标签 -->
  <tag>
  				<!-- 标签名 ,在JSP 页面上使用标签时的名字-->
  			<name>hello</name>
  			<!-- 标签所在的全类名 -->
  			<tag-class>tag.HelloSimpleTag</tag-class>
  			<!-- 标签体的类型 -->
  			<body-content>empty</body-content>

  			<!--  描述当前标签的属性-->
  			<attribute>
  			<!-- 属性名 -->
  						<name>value</name>
  						<!-- 该属性是否为必须 -->
  						<required>false</required>
  						<!-- runtime expression value
  					当前属性是否可以接受运行时表达式的动态值
  						 -->
  						<rtexprvalue>false</rtexprvalue>
  			</attribute>

  				<attribute>
  			<!-- 属性名 -->
  						<name>count</name>
  						<!-- 该属性是否为必须 -->
  						<required>false</required>
  						<!-- runtime expression value
  					当前属性是否可以接受运行时表达式的动态值
  						 -->
  						<rtexprvalue>false</rtexprvalue>
  			</attribute>

  </tag>

  </taglib>

其中,name和count是自定义标签的属性。

3.在JSP页面导入并使用该标签:

	<myTag:hello/>

hello和tld文件中的标签名要一致。一个tld文件中可以有多个标签和标签名。所以在导入使用的时候也要注意点。

通过以上步骤,就完成了一个简单自定义标签的开发。

那么自定义标签中的属性又是干嘛的呢?也许在咱们的tld文件中需要传入几个参数,这时就需要属性了。要想使用属性,首先需要在Java类中声明这些属性以及相应的set()方法.

private String value;
	private String count;
	public void setValue(String valueString) {
		this.value = valueString;
	}

	public void setCount(String count) {
		this.count = count;
	}

同时,也需要在tld文件中对这些属性进行描述。最后,在咱们导入使用的时候,写上这些参数名和值即可

<mytag:	value="myTag" count="10"/>

doTag()方法:

public void doTag() throws JspException, IOException {
		System.out.println("doTag");
	HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();
	System.out.println("value:"+value+"count:"+count);
	pageContext.getOut().println("Hello"+request.getParameter("name"));

	}
时间: 2024-08-14 21:57:50

JavaWEB——简单标签简单总结的相关文章

javaweb学习总结(二十六)——jsp简单标签标签库开发(二)

一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段,这段JSP片段中不能包含JSP脚本元素. WEB容器在处理简单标签的标签体时,会把标签体内容用一个JspFragment对象表示,并调用标签处理器对象的setJspBody方法把JspFragment对象传递给标签处理器对象.JspFragment类中只定义了两个方法,如下所示: getJspCon

javaweb学习总结(二十五)——jsp简单标签开发(一)

一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口来实现标签的功能. 实现SimpleTag接口的标签通常称为简单标签.简单标签共定义了5个方法: setJspContext方法 setParent和getParent方法 setJspBody方法 doTag方法(非常重要),简单标签使用这个方法就可以完成所有的业务

javaweb学习总结(二十七)——jsp简单标签开发案例和打包

一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.IOException; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import javax.servlet.jsp.JspException;

09.javaweb简单标签编程

一.简单标签 1,  简介:由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口来实现标签的功能.   2,  实现SimpleTag接口的标签称为简单标签.简单标签共有五个方法 setJspContext方法:用于把JSP页面的pageContext对象传递给标签处理器对象 setParent方法:用于把父标签处理器对象传递给当前标签处理器对象 get

Intellijidea建javaWeb以及Servlet简单实现

Intellijidea建javaWeb以及Servlet简单实现 一.创建并设置javaweb工程 1.创建javaweb工程 File --> New --> Project... 点击Project后出现如下界面,选择Java Enterprise,选中下图圈中部分 点击Next后弹出下图弹出框,设置工程名字: 创建完成后工程结构如下: 2. Web工程设置 2.1 在WEB-INF 目录下点击右键,New --> Directory,创建 classes 和 lib 两个目录 c

JSP简单标签开发

一.继承自SimpleTag接口的自定义标签实现类称为简单标签,接口中5个方法 1.setJspContext方法 用于把JSP页面的PageContext对象传递给标签处理器对象 2.setParent方法 把父标签处理器对象传递给当前处理器对象 3.getParent方法 用于获取当前标签的父标签处理器对象 4.setJspBody方法 用于把代表标签体的JspFragment对象传递给标签处理器对象 5.doTag方法 用于完成所有标签逻辑,如输出.迭代.修改标签内容等.在方法中可以通过抛

简单标签

简单标签:实现SimpleTag接口的标签通常称为简单标签.简单标签共定义了5个方法:setJspContext方法setParent和getParent方法setJspBody方法doTag方法 setJspContext方法: 用于把JSP页面的pageContext对象传递给标签处理器对象 setParent方法: 用于把父标签处理器对象传递给当前标签处理器对象getParent方法: 用于获得当前标签的父标签处理器对象 setJspBody方法: 用于把代表标签体的JspFragment

自定义标签库开发(简单标签开发)

实现Tag接口,BodyTag接口,IterationTag接口的标签开发技术一般称为传统标签开发技术. 实现SimpleTag接口的标签开发技术,一般称为简单标签开发技术. JSP2.0里新增了SimpleTag. 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编写和调用的SimpleTag接口来实现标签的功能.实现SimpleTag接口的标签通常称为简单标签.简单标签共定义了5

简单标签库功能

1 package cn.itcast.web.tag; 2 3 import java.io.IOException; 4 import java.io.StringWriter; 5 6 import javax.servlet.jsp.JspException; 7 import javax.servlet.jsp.tagext.JspFragment; 8 import javax.servlet.jsp.tagext.SimpleTagSupport; 9 10 //控制标签体内容为大