JSP自定义标签
来源:互联网 发布:nba2k17麦迪动作数据 编辑:程序博客网 时间:2024/06/06 07:33
标签转化为对被 称为tag handler的对象的操作,即当 servlet执⾏行行时Web container调⽤用那些操作。
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 tagTwo:那么学会了第一步,就会想到如何在标签中加入内容比如说:<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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();} catch (JspException e) {// TODO Auto-generated catch blocke.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>
最后的全部输出:
阅读全文
1 0
- JSP----自定义标签---简单标签
- jsp自定义标签-----嵌套标签
- JSP标签编程----自定义标签
- JSP 自定义标签:简单标签
- JSP标签-JSTL-自定义标签
- JSP自定义标签-Select标签
- jsp 自定义标签---标签文件
- JSP自定义标签
- JSP自定义标签学习心得
- JSP自定义标签试验
- JSP 自定义标签库
- 自定义JSP标签
- 创建JSP自定义标签
- 关于自定义标签 jsp
- 关于自定义标签 jsp
- jsp 自定义分页标签
- JSP自定义标签简介
- JSP自定义标签例子
- 使用handlebars时script标签中如何获取后台传递的数据
- 【矩阵模板】
- 分组背包
- 深度学习中噪声标签的影响和识别
- CodeForces
- JSP自定义标签
- C语言实现课程设计
- Java微信公众号开发面试题
- <c:forEach> 标签使用
- LCD(一):LCD基本原理篇
- Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root)
- sqlmap教程(burpsuit辅助)
- Python web入门:Django学习与实践二(简单页面实现和创建一个模板)
- 【webpack】style-loader错误