zoukankan      html  css  js  c++  java
  • Servlet------>jsp自定义标签SimpleTag(jsp2.0以后的方法,1-5已经淘汰了)

    自定义标签能做什么:

    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文件配置:

     

  • 相关阅读:
    Call指令和Ret指令讲解02 零基础入门学习汇编语言49
    指针01 零基础入门学习C语言41
    Call指令和Ret指令讲解03 零基础入门学习汇编语言50
    Call指令和Ret指令讲解01 零基础入门学习汇编语言48
    指针01 零基础入门学习C语言41
    指针02 零基础入门学习C语言42
    Call指令和Ret指令讲解02 零基础入门学习汇编语言49
    VC++2012编程演练数据结构《31》狄杰斯特拉算法
    VC++2012编程演练数据结构《30》弗洛伊德算法
    在Windows Azure Web Site上为Node.js自动安装NPM包
  • 原文地址:https://www.cnblogs.com/SnowingYXY/p/6729800.html
Copyright © 2011-2022 走看看