自定义标签能做什么:
1.移除java代码
2.控制jsp页面某一部分是否执行
3.控制整个jsp是否执行
3.jsp内容重复输出
4.修改jsp内容输出
位置:
TagDemo1.java
package simpletag; import java.io.IOException; import java.io.StringWriter; import javax.servlet.jsp.JspException; import javax.servlet.jsp.SkipPageException; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.SimpleTagSupport; /** * @author: snowing * @date : 2017年4月18日 * */ //用简单标签控制是否执行标签体 /*public class TagDemo1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { JspFragment jf=this.getJspBody(); //得到标签体 jf.invoke(this.getJspContext().getOut()); } }*/ //用简单标签控制标签体执行5次 /*public class TagDemo1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { JspFragment jf=this.getJspBody(); //得到标签体 for(int i=0;i<=5;i++){ jf.invoke(null);//= jf.invoke(this.getJspContext().getOut());把标签体打给浏览器 } } }*/ //修改标签体 /*public class TagDemo1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { JspFragment jf=this.getJspBody(); //得到标签体 StringWriter sw=new StringWriter();//创建带缓冲的流 jf.invoke(sw);//存入缓冲流 String content=sw.toString();//得到缓冲流里的值 content=content.toUpperCase();//标签体内容大写 this.getJspContext().getOut().write(content);//通过out对象写给浏览器 } }*/ //控制余下的jsp不执行 public class TagDemo1 extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { throw new SkipPageException(); } }
SimpleTagDemo1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/snowingSimpleDemo1.com" prefix="simpletag" %> <%@page import="javax.servlet.jsp.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>控制余下的jsp不执行</title> </head> <body> Start <simpletag:SimpleDemo1>aaaaaaaa</simpletag:SimpleDemo1> End </body> </html>
tag2.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"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>SHOW</short-name> <uri>/snowingSimpleDemo1.com</uri> <tag> <name>SimpleDemo1</name> <tag-class>simpletag.TagDemo1</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
效果:
//用简单标签控制是否执行标签体
//用简单标签控制标签体执行5次
//修改标签体
//控制余下的jsp不执行
1.自定义标签带属性:(详细配置tld,和jsp页面引入都省略了,请参考jsp自定义标签1)
tld文件说明
自定义标签带属性java类接收,并处理
自定义标签带属性jsp
2.防盗链doget方法重写(详细配置tld,和jsp页面引入都省略了,请参考jsp自定义标签1)
site是能访问的链接,page是如果链接不对跳转到的主页
tld文件配置:
既往不恋,未来不迎,当下不杂