栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

J2EE(jsp标签01)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

J2EE(jsp标签01)

目录

一、标签语言的

二、自定义标签的开发乃使用步骤

三、标签生命周期

四、实践

   


一、标签语言的特点

        1、标签语言的形式

                        <开始标签  属性="属性值">标签体

        2、标签语言分类

                        1、空标签        如:br、hr

                        2、Ui标签        如;input、table

                        3、控制标签        如:if、foreach

                        4、数据标签        如:out标签

二、自定义标签的开发乃使用步骤

           1、步骤

                      ①建立标签库描述文件(tld)

                        

                        注意:tld文件必须保存到WEB-INF目录或其子目录

                        

                       标签库中的标签与tld中的tag元素有关,也就是跟tag元素对应的助手类有关

                        ②、建立助手类(必须继承BodyTagSupport)

                         ③、jsp页面通过taglib指令导入标签库

         2、案例

                将C:if换成z:if

               建立标签库文件tlb

                 name改成z

                 在上面框中的URI路径可以改成自己想要输入的路径

                如图所示:

 三、标签生命周期

生命周期图:

   jsp生命周期一共有三条路线:

       1、如果将dostarttag的返回值改为skip_body,那么doafterbody就不会调用执行(路线1)
       2、如果将dostarttag的返回值改为EVAL_BODY_INCLUDE,那么doafterbody就会执行,就相当于调用默认(路线2)
       3、如果将doafterbody的返回值改为eval_body_again,那么就会一直调用doafterbody,会进入循环(路线3)

注:在有标签体的情况下,默认会调用助手类的doStartTag、doAfterbody、doendtag方法

        

四、实践

        自定义if、set、out标签

        创建tld文件

        tld代码展示(if、set、out):



    
  JSTL 1.1 core library
  JSTL core
  1.1
  z
  http://jsp.zwcedu.cn

  
    
        Provides core validation features for JSTL tags.
    
    
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    
  

  
  
    demo1
    
    com.zwc.tag.DemoTag1
    
    JSP
    
   
       
        
      
        
       
   
  

 
    if
    com.zwc.tag.IfTag
    JSP
 	 
         test 
         true 
         true 
  	  
  
  
   
    set
    com.zwc.tag.SetTag
    JSP
 	 
         var 
         true 
         false 
  	  
  	  
         value 
         true 
         true 
  	  
  
  
   
    out
    com.zwc.tag.OutTag
    JSP
 	 
         value 
         true 
         true 
  	  
  

        if助手类:
package com.zwc.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;


public class IfTag extends BodyTagSupport{
	private boolean test;
	
	public boolean isTest() {
		return test;
	}

	public void setTest(boolean test) {
		this.test = test;
	}

	@Override
	public int doStartTag() throws JspException {
//		如果满足条件就打印标签体-->dostarttag的返回值eval_body_include
//		 如果不满足条件,就不输出标签体->dostarttag的返回值skip_body
		return test ? EVAL_BODY_INCLUDE : SKIP_BODY;
	}
}

        

        set助手类:
package com.zwc.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;


public class SetTag extends BodyTagSupport{
	private String var;
	private Object value;
	
	
	
	public String getVar() {
		return var;
	}



	public void setVar(String var) {
		this.var = var;
	}



	public Object getValue() {
		return value;
	}



	public void setValue(Object value) {
		this.value = value;
	}



	@Override
	public int doStartTag() throws JspException {
//		 要存储数据,以键值对的形式存储,分析得来该标签有2个属性
		pageContext.setAttribute(var, value);
		return super.doStartTag();
	}
}

 out助手类:

package com.zwc.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;


public class OutTag extends BodyTagSupport{
	private Object value;

	public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}
	
	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(value);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}
}

        jsp界面输出;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="z" uri="http://jsp.zwcedu.cn" %>




Insert title here


xx
true
false



运行结果;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号