第一次写自定义标签

来源:互联网 发布:雷军 are you ok 知乎 编辑:程序博客网 时间:2024/06/05 16:41

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

仿造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 {@Overridepublic int doEndTag() throws JspException {return super.EVAL_PAGE;}@Overridepublic 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 blocke.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;@Overridepublic 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;}}@Overridepublic int doEndTag() throws JspException {return super.EVAL_PAGE;}@Overridepublic 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";@Overridepublic int doEndTag() throws JspException {return super.EVAL_PAGE;}@Overridepublic 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";@Overridepublic int doEndTag() throws JspException {return super.EVAL_PAGE;}@Overridepublic 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;}}

0 0
原创粉丝点击