博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义一个jsp标签
阅读量:6938 次
发布时间:2019-06-27

本文共 2069 字,大约阅读时间需要 6 分钟。

hot3.png

tld文件

1.0
2.0
cc
/tag
printsth
tag.JSPTag
empty
info
false
true

java文件

package furioussoul.jsp.tag;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;public class JSPTag extends TagSupport{	@Override	public int doStartTag() throws JspException {		JspWriter writer = this.pageContext.getOut();		try {			writer.print("my tag start");		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		return this.EVAL_BODY_INCLUDE;//把这个流送入body正文流	}		@Override	public int doEndTag() throws JspException {		JspWriter writer = this.pageContext.getOut();		try {			writer.print("my tag end");		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}		return this.EVAL_PAGE;//继续处理body内容	}}

标签中静态常量: 

EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 
SKIP_BODY:告诉服务器不要处理正文内容 
EVAL_PAGE:让服务器继续执行页面 
SKIP_PAGE:让服务器不要处理剩余的页面 
EVAL_BODY_AGAIN:让服务器继续处理正文内容,只有doAfterBody方法可以返回 
EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回 
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。

他们执行顺序如下: 

doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag() 

doStartTag()方法可返回EVAL_BODY_INCLUDE或SKIP_BODY, 
如果返回EVAL_BODY_INCLUDE则继续执行; 
如果返回SKIP_BODY则接下来的doInitBody(),setBodyContent(), doAfterBody()三个方法不会被执行, 
而直接执行doEndTag()方法。 

setBodyContent()方法用于设置标签体内容,如果在此之前要作一些初始化工作,则在doInitBody()方法中完成。 
标签体内容执行完后,会调用doAfterBody()方法,此方法可返回EVAL_BODY_TAG, SKIP_BODY, EVAL_PAGE或SKIP_PAGE。 
如果返回EVAL_BODY_TAG则会再次设置标签体内容,直到返回SKIP_BODY; 
如果返回EVAL_PAGE则标签体执行完后会继续执行JSP页面中接下来的部分; 
如果返回SKIP_PAGE,则JSP页面的后续内容将不再执行

web.xml中配置tld的uri(标志)和路径

/mytag
/WEB-INF/tag.tld

转载于:https://my.oschina.net/furioussoul/blog/647894

你可能感兴趣的文章
javascript使用缓存计算来提高应用程序性能
查看>>
服务器退还操作
查看>>
IP别名与多网卡绑定(RHEL5/RHEL6)
查看>>
ubuntu下安装Apache+PHP+Mysql
查看>>
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源
查看>>
解决Raspberry Pi不识别RTL8188eu无线网卡芯片的问题
查看>>
敏捷个人:激励 2011-11-26期
查看>>
定风波 - 滑雪
查看>>
Amh/Nginx更改网站根目录
查看>>
ISAPI_Rewrite3.1相关知识
查看>>
软件测试工程师的角度看论证学问
查看>>
VCSA 6.5 HA配置 之三 :准备工作
查看>>
格式输出
查看>>
使用webpack打包的后,公共请求路径的配置问题
查看>>
linux program HEAP tracker
查看>>
直播源码:直播+内容营销新趋势
查看>>
Docker 健康检查功能
查看>>
mac pro下安装gdb和delve调试器
查看>>
SEO基础知识8大精华文章之第三篇 SEO的历史(连载)
查看>>
shell 批量添加用户健壮版
查看>>