第一次写自定义标签

写了近两个小时,终于搞定了四个标签,暂时告一段落

仿造jstl写的四个标签


第一个helloworld标签

package com.my.web.taglib;

import java.io.IOException;

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

public class HelloWorldTag extends TagSupport {

	@Override
	public int doEndTag() throws JspException {
		return super.EVAL_PAGE;
	}

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = super.pageContext.getOut();
		try {
			out.println("<font style='color:red'>你好,世界</font>");
			out.flush();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return super.SKIP_BODY;
	}

}


第二个forEach标签

package com.my.web.taglib;

import java.util.List;

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

public class ForEachTag extends TagSupport {
	private Object items;
	private String var;
	private String varStatus;
	private int step = 1;
	private int index = 0;
	private List list;
	@Override
	public int doAfterBody() throws JspException {
		System.out.println("------------------");
		if(index<list.size()){
			super.pageContext.setAttribute(var, list.get(index));
			if(varStatus!=null&&varStatus.equals("")){
				super.pageContext.setAttribute(varStatus, index);
			}
			index+=step;
			return super.EVAL_BODY_AGAIN;
		}else{
			return super.SKIP_BODY;
		}
	}
	@Override
	public int doEndTag() throws JspException {
		return super.EVAL_PAGE;
	}
	@Override
	public int doStartTag() throws JspException {
		list = (List)items;
		index=0;
		return super.EVAL_BODY_INCLUDE;
	}
	public Object getItems() {
		return items;
	}
	public void setItems(Object items) {
		this.items = items;
	}
	public String getVar() {
		return var;
	}
	public void setVar(String var) {
		this.var = var;
	}
	public String getVarStatus() {
		return varStatus;
	}
	public void setVarStatus(String varStatus) {
		this.varStatus = varStatus;
	}
	public int getStep() {
		return step;
	}
	public void setStep(int step) {
		this.step = step;
	}
	
	
}


第三个if标签

package com.my.web.taglib;

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

public class IfTag extends TagSupport {

	private boolean test;
	private String var;
	private String scope = "page";

	
	@Override
	public int doEndTag() throws JspException {
		return super.EVAL_PAGE;
	}
	@Override
	public int doStartTag() throws JspException {
		if(var!=null&&!var.equals("")){
			if(scope.equals("page")){
				super.pageContext.setAttribute(var, test);
			}else if(scope.equals("session")){
				super.pageContext.getSession().setAttribute(var, test);
			}else if(scope.equals("request")){
				super.pageContext.getRequest().setAttribute(var, test);
			}else if(scope.equals("application")||scope.equals("ServletContext")){
				super.pageContext.getServletContext().setAttribute(var, test);
			}else if(scope==null||scope.equals("")){
				super.pageContext.setAttribute(var, test);
			}
		}
		if(test){
			return super.EVAL_BODY_INCLUDE;
		}else{
			return super.SKIP_BODY;
		}
	}
	
	public boolean isTest() {
		return test;
	}
	
	public void setTest(boolean test) {
		this.test = test;
	}
	public String getVar() {
		return var;
	}
	public void setVar(String var) {
		this.var = var;
	}
	public String getScope() {
		return scope;
	}
	public void setScope(String scope) {
		this.scope = scope;
	}
	
	
}


第四个time标签
package com.my.web.taglib;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

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

public class TimeTag extends TagSupport {
	private String format="yyyy-MM-dd";

	@Override
	public int doEndTag() throws JspException {
		return super.EVAL_PAGE;
	}

	@Override
	public int doStartTag() throws JspException {
		DateFormat df = new SimpleDateFormat(format);
		JspWriter out = super.pageContext.getOut();
		try {
			out.println(df.format(new Date()));
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.SKIP_BODY;
	}

	public String getFormat() {
		return format;
	}

	public void setFormat(String format) {
		this.format = format;
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值