JSP自定义标签
2017-08-22 20:22
363 查看
标签转化为对被 称为tag handler的对象的操作,即当 servlet执⾏行行时Web container调⽤用那些操作。
JSP标签扩展可以让你创建新的标签并且可以直接插⼊入到 ⼀个JSP⻚页⾯面
继承SimpleTagSupport类并重写的doTag()⽅方法来开发⼀ 个最简单的⾃自定义标签。
我们如何做一个自定义标签呢<EX:run/>
1.首先编写标签的逻辑功能类,即继承SimpleTagSupport类
2.定义标签格式⽂文件TLD
3.使⽤用JSP指令引⼊入TLD⽂文件
4.就可以使⽤用标签了了
One:
后面注意在你的jsp运行文件上配置你的自定义标签
Two:那么学会了第一步,就会想到如何在标签中加入内容比如说:<EX:bodytag>你好世界</EX:bodytag>
同样的我重新定义了一个类
这边只要在最先创建的tld中增加就好了
Three:最后说说标签中的属性吧,其实就是我们在类中设置的变量,和上面的做法一致:such:<EX:AttrTag message="hello world">
同样的在tld中添加,输出的时候<EX:AttrTag message="hello world"></EX:AttrTag>
最后的全部输出:
JSP标签扩展可以让你创建新的标签并且可以直接插⼊入到 ⼀个JSP⻚页⾯面
继承SimpleTagSupport类并重写的doTag()⽅方法来开发⼀ 个最简单的⾃自定义标签。
我们如何做一个自定义标签呢<EX:run/>
1.首先编写标签的逻辑功能类,即继承SimpleTagSupport类
2.定义标签格式⽂文件TLD
3.使⽤用JSP指令引⼊入TLD⽂文件
4.就可以使⽤用标签了了
One:
public class EXrun extends SimpleTagSupport { public EXrun(){ } public void doTag() throws IOException{ JspWriter out = getJspContext().getOut(); out.println("my first jsp tag"); } }
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Example TLD</short-name> <tag> <name>run</name><!-- 这里的值就是上面的标签中的run --> <tag-class>tag.EXrun</tag-class><!-- 表示的是包名加类名 --> <body-content>empty</body-content><!-- 表示标签的中间不能填写数据 -->
</tag> </taglib>
后面注意在你的jsp运行文件上配置你的自定义标签
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="EX" uri ="WEB-INF/EX.tld"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <EX:run></EX:run> </body> </html>运行结果为my first jsp tag
Two:那么学会了第一步,就会想到如何在标签中加入内容比如说:<EX:bodytag>你好世界</EX:bodytag>
同样的我重新定义了一个类
public class EXBodyTag extends SimpleTagSupport { public EXBodyTag(){ } public void doTag(){ StringWriter sw = new StringWriter(); try { getJspBody().invoke(sw); getJspContext().getOut().println(sw.toString()); } catch (JspException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
这边只要在最先创建的tld中增加就好了
<tag> <name>BodyTag</name> <tag-class>tag.EXBodyTag</tag-class> <body-content>scriptless</body-content> </tag>这样你就可以在你的jsp中使用<EX:BodyTag>你好</EX:BodyTag>
Three:最后说说标签中的属性吧,其实就是我们在类中设置的变量,和上面的做法一致:such:<EX:AttrTag message="hello world">
public class EXAttrTag extends SimpleTagSupport { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public void doTag(){ try { if(message !=null){ JspWriter out =getJspContext().getOut(); out.println(message); }else{ StringWriter sw = new StringWriter(); getJspBody().invoke(sw); getJspContext().getOut().println(sw.toString()); } }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JspException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }我在这边做了判断,如果我们没有设置属性的话就显示我们标签中的内容,不然的话不显示
<tag> <name>AttrTag</name> <tag-class>tag.EXAttrTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>message</name> </attribute> </tag>
同样的在tld中添加,输出的时候<EX:AttrTag message="hello world"></EX:AttrTag>
最后的全部输出:
相关文章推荐
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- JSP 自定义标签
- Jsp自定义标签和方法详解
- jsp自定义标签
- JSP自定义标签-第一个简单的例子
- jsp使用自定义标签taglib分页系列——完整例子
- JSP自定义标签
- JSP自定义标签编写
- JSP自定义标签的编写
- JSP自定义标签(一)
- jsp自定义标签-----嵌套标签
- JSP自定义标签由浅到深讲解
- jsp自定义标签
- jsp自定义标签实现新闻列表(与spring整合)
- JSP自定义标签
- jsp自定义标签实例
- 利用 JSP 2 提供的 SimpleTagSupport 开发自定义标签
- J2EE基础:JSP中自定义标签的详细讲解
- JSP自定义标签Taglib实现过程重点总结
- jsp 自定义标签