当前位置:  编程技术>java/j2ee

jsp自定义标签技术(实现原理与代码以及平台搭建步骤)

    来源: 互联网  发布时间:2014-10-18

    本文导语:  由于jsp代码规范要求不能出现一句java代码。所有就有了jsp 的自定义标签技术。 所以jsp的自定义标签技术就是除去jsp的中的java代码。同时封装标签个人感觉也是一种安全性的体现,不让别人知道实现内部的代码。 那个如何实...

由于jsp代码规范要求不能出现一句java代码。所有就有了jsp 的自定义标签技术。
所以jsp的自定义标签技术就是除去jsp的中的java代码。同时封装标签个人感觉也是一种安全性的体现,不让别人知道实现内部的代码。
那个如何实现自定义标签技术呢?

第一你得搭建一个环境,apche公司给了两个jar包分别是jstl.Jar和standar.Jar.将他们导入到javaweb工程下wed-inf的lib目录下面。(这两个jar包网上很多,也可上官网直接下载)
环境构建完毕。下面我用一段代码来制作一个获取本地ip的标签。

第一步:创建一个java类,该类实现了tag接口,或者直接继承tagsupport类,重写其中的doStartTag()方法。
代码:
代码如下:

package com.fish;
importjava.io.IOException;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.JspWriter;
importjavax.servlet.jsp.tagext.TagSupport;
public class Mytaglib extends TagSupport{
@Override
public int doStartTag() throws JspException {
HttpServletRequestrequest=(HttpServletRequest)this.pageContext.getRequest();//这个通过pagecontext可以获取服务器端的8大内置对象。这里request
JspWriter out=this.pageContext.getOut();////这个通过pagecontext可以获取服务器端的8大内置对象。这里out.( pageContext自己也是属于内置对象,本来9大除去一个就是8大)
try {
out.print(request.getLocalName());//这句话就是获取主机名字的
} catch (IOException e) {
throw new RuntimeException(e);//抛出一个运行时异常
}
return super.doStartTag();
}
}

第二步:就是创建tld文件,首先tld也要建立在web-inf下面:
书写格式我们可以去tomcat里面去抄,找到tomcat安装目录下面的webapps文件夹,然后进入 examplesWEB-INFjsp2里面有个tld文件。去抄他的头。
代码如下:
代码如下:



A tag library exercising SimpleTaghandlers.
1.0
mylibs//名字随便写
http://fish/mylibs//uri随便写,但是下面有用的哦

fish//自定义标签名字
com.fish.Mytaglib//就是你上面定义java类的包名加类名
empty//表示标签里面不写任何东西



其实每多加一个就意味着多一个标签。所以一个tld里面可以写n个标签啦。
第三步:在jsp里面引用.
代码如下:


//这里面uri要和上面一样啊,后面的属性可以乱写的但是下面会用到的





My JSP 'index.jsp' starting page


//这里这个标签不是和上面的my对应了吧,fish是在tld里面你自己定义的一个标签名字。



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有谁说说jsp中的变量与函数定义
  • 关于bean和jsp预定义中的小问题
  • jsp中怎样定义全局变量
  • 在写自定义标签时,如何得到引用当前标签的jsp文件名呢?
  • JSP页面中能定义文件输出流变量吗?
  • JSP教程(三)--JSP中”预定义变量”的使用
  • 请问在jsp中是不是不允许有自定义的函数呀?
  • 请问JSP中如何调用自己定义的类包?谢谢!
  • 高分求助关于jsp自定义函数的问题
  • 在JSP中多维数组如何定义,初始化?救命呀!
  • JSP怎么定义日期变量并赋值
  • 在线给分:在jsp页面内部能不能定义字函数或者类来调用
  • 网络技术 iis7站长之家
  • 请教:为什么在<%!...%>内部定义的函数不能用jsp页面缺省的对象如:out,request,session,等。
  • JSP自定义标记符库的*.tld XML文件应放在什么地方
  • 在jsp中调用另一个自定义的java类
  • jsp自定义标签之ifelse与遍历自定义标签示例
  • jsp中定义和使用方法示例介绍
  • 一个关于JSP自定义标签的问题.急!!!
  • JSP 自定义标签之一 简单实例
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3