时间:2014-01-28 来源:

JSP自定义标签的实现过程

2001年接触jsp,当时标签库、N层结构开发、设计模式等j2ee的思想还刚刚萌芽,符合w3c标准每个jsp文件就是纯粹的java嵌入代码、java、html的混杂,html切图对apache组织上的jstl略有了解,网页切图价格但没有真正在项目中使用.随着struts的流行,手机前端外包jstl的风头已经被盖过承接网页制作,但据说core这个jstl中的标签库使用的还是很多.本次基于学习的目的,承接网页制作重新体验了一下自定义标签的实现过程.做一个最简单的自定义标签<mytag:hello/>, Inc.//DTD JSP Tag Library 1.2//EN\"     \"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd\"> <taglib>     <tlib-version>1.0</tlib-version>     <jsp-version>1.2</jsp-version>     <short-name>tagSample</short-name>[Page]     <uri>/hellotag</uri>     <tag>         <name>hello</name>         <tag-class>cn.itcast.tag.HelloTag</tag-class>         <body-content>empty</body-content>     </tag> </taglib>

标签库的优点

2、编写hellotag.tld标签定义文件

<%@ page contentType=\"text/html; charset=GBK\" %> <%@ page errorPage=\"error.jsp\" %> <%@ taglib uri=\"/WEB-INF/hellotag.tld\" prefix=\"mytag\" %> <html> <head> <title></title> </head> <body> <mytag:hello/> <mytag:hello>haha</mytag:hello> </body> </head>

注意Tag中定义的几个常量的含义(EVAL_PAGE,SKIP_BODY等)

3、编写测试jsp文件

1、最大限度地消除jsp页面中嵌入的java代码 2、增强代码扩展性、可读性、代码复用,符合w3c标准简化了jsp页面编写的工作量  

1、编写标签处理类HelloTag(实现javax.servlet.jsp.tagext.Tag类)

package cn.itcast.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; public class HelloTag implements Tag {     private PageContext pageContext;     private Tag tag;         public int doEndTag() throws JspException {         try {             pageContext.getOut().print(\"hello world!\");         } catch (IOException e) {             e.printStackTrace();         }         return Tag.EVAL_PAGE;     }     public int doStartTag() throws JspException {         return Tag.SKIP_BODY;     }     public Tag getParent() {         return null;     }     public void release() {     }     public void setPageContext(PageContext arg0) {         this.pageContext = arg0;     }     public void setParent(Tag arg0) {         this.tag = arg0;     } }

(责任编辑:大宝库)

点击次数:3298
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日Java简单的UDP通讯例子【移动开发】2015年05月25日最简单的ADABOOST人脸检测例程,COPY运行,前提是你配置好OpenCV环境 【系统运维】2014年11月04日百度快照与关键字的排名关系有多大?2014年01月28日分享PHPheader函数使用教程2014年01月29日数据结构-哈希函数 【架构设计】2015年05月05日rockethon2015C题Secondpriceauction概率dp 【编程语言】2015年02月15日2015湖南长沙生存费用粗估 【移动开发】2015年08月27日求二叉树中节点的最大距离【综合】2015年07月14日php特殊字符处理函数2014年01月29日Android--启动Service并传递数据 【综合】2015年05月27日唯美的话语【移动开发】2014年12月03日UVA-11627Slalom【Web前端】2015年07月21日xCAT安装与更新软件【编程语言】2015年03月13日Swift用代码进行界面跳转 【综合】2015年01月29日POJ3785TheNextPermutation全排列字典序法【数据库】2015年01月24日SPPSjava创建template 【系统运维】2014年11月11日九度OJ10952的幂次方 【编程语言】2015年01月07日LeetCode---18.4Sum 【移动开发】2015年02月02日设计模式:自己手动写一适配器和外观模式 【综合】2015年08月31日11周(反序数) 【编程语言】2014年11月11日一些项目——二维数组的置换 【编程语言】2015年05月05日WPSOffice2012在线模板免费用2014年01月28日使用Photoshop给QQ版头像上色2014年01月28日如何判断QML应用被推送到后台和前台【编程语言】2015年01月07日Javac编译时报“非法的前向引用”,以及Eclipse自带的Java编译器的缺陷 【编程语言】2015年03月20日Java_生活工具箱在线系统发布 【移动开发】2015年07月07日Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator安装配置文字版2014年01月29日ASP编程入门进阶(三):接触脚本程序2014年01月29日GPIO初始化小细节12016年11月08日通过反射克隆对象,对象复制(克隆),对象合并工具类升级版【系统运维】2015年02月02日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)