博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb—自定义标签练习
阅读量:4343 次
发布时间:2019-06-07

本文共 4315 字,大约阅读时间需要 14 分钟。

练习一:<max:num1="" num2=""/>

<petrelsky:maxTagDemo num1="23" num2="35">

 

练习二:定制一个带有一个属性的标签<xxx:readFile src="">用于输出指定文件的内容

<petrelsky:readFileTagDemo src="WEB-INF/haha.txt">

 

练习一:

创建MaxTag类并实现SimpleTag,添加num1、num2属性和setter方法,在doTag()方法中完成比较和输出。

 

package com.demo.tag;import javax.servlet.jsp.JspContext;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.JspTag;import javax.servlet.jsp.tagext.SimpleTag;import java.io.IOException;public class MaxTag implements SimpleTag {    private String num1;    private String num2;    public void setNum1(String num1) {        this.num1 = num1;    }    public void setNum2(String num2) {        this.num2 = num2;    }    @Override    public void doTag() throws JspException, IOException {        int a = 0;        int b = 0;        JspWriter out = pageContext.getOut();        try {            a = Integer.parseInt(num1);            b = Integer.parseInt(num2);            out.print(a > b ? a : b);        }catch (Exception e){            out.print("输入的属性格式不正确!!!");        }    }    @Override    public void setParent(JspTag jspTag) {    }    @Override    public JspTag getParent() {        return null;    }    private PageContext pageContext;    @Override    public void setJspContext(JspContext jspContext) {            this.pageContext = (PageContext) jspContext;    }    @Override    public void setJspBody(JspFragment jspFragment) {    }}

 

在mytld.tld中进行标签的相关配置

max
com.demo.tag.MaxTag
empty
num1
true
true
num2
true
true

  

在jsp页面引用标签,首先需要导入标签

<%@taglib prefix="yhs" uri="http://mycompany.com" %>
 

 效果图:

 

通常情况下开发简单标签直接继承SimpleTagSupport就可以了,可以直接调用其对应的getter方法的到 对应API

public class SimpleTagSupport implements SimpleTag {    private JspTag parentTag;    private JspContext jspContext;    private JspFragment jspBody;    public void doTag() throws JspException, IOException {    }    public void setParent(JspTag parent) {        this.parentTag = parent;    }    public JspTag getParent() {        return this.parentTag;    }    public void setJspContext(JspContext pc) {        this.jspContext = pc;    }    protected JspContext getJspContext() {        return this.jspContext;    }    public void setJspBody(JspFragment jspBody) {        this.jspBody = jspBody;    }    protected JspFragment getJspBody() {        return this.jspBody;    }   }

  

练习二:

创建ReadFileTag类继承SimpleTagSupport类,重写doTag()方法,添加src属性

 

package com.demo.tag;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.SimpleTagSupport;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class ReadFileTag extends SimpleTagSupport {   //相对于当前web应用的根路径额文件名    private String src;    public void setSrc(String src) {        this.src = src;    }    @Override    public void doTag() throws JspException, IOException {        PageContext pageContext = (PageContext) getJspContext();        InputStream is = pageContext.getServletContext().getResourceAsStream(src);        BufferedReader reader = new BufferedReader(new InputStreamReader(is));        String str = null;        while ((str = reader.readLine())!=null){            pageContext.getOut().write(str);            pageContext.getOut().write("
"); } }}

 

  

在读取时标签必须转换为特定的编码符号

str = Pattern.compile("<").matcher(str).replaceAll("&lt");

str = Pattern.compile(">").matcher(str).replaceAll("&gt");

 

在mytld.tld中进行标签的相关配置

readfile
com.demo.tag.ReadFileTag
empty
src
true
true

  

在jsp页面引用标签,首先需要导入标签

<%@taglib prefix="yhs" uri="http://mycompany.com" %>  

  

效果图:

转载于:https://www.cnblogs.com/yangHS/p/11177542.html

你可能感兴趣的文章
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
Android ListView上拉获取下一页
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
两台电脑如何实现共享文件
查看>>
组合模式Composite
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
我的第一篇CBBLOGS博客
查看>>
【MyBean调试笔记】接口的使用和清理
查看>>
07 js自定义函数
查看>>
jQueru中数据交换格式XML和JSON对比
查看>>