java jsp自定义模板_JSP自定义标签

一、如何自定义标签:

自定义标签功能要求在后台必须有一个相关的JAVA类的支持,但并不是任意编写一个JAVA类就能处理JSP标签,这个类也必须实现指定的规范才能用于支持JSP标签,这些规范表现形式也是接口和类,他们在 javax.serviet.jsp.tagext包中声明,主要接口/类描述如下:

javax.servlet.jsp.tagext.Tag接口,所有处理JSP标签的类必须实现该接口。该接口中声明了6个方法,如果直接从该接口生成类则必须实现所有的6个方法,通常不会直接通过该接口生成标签的处理类。

javax.servlet.jsp.tagext.TagSupport 类 该类实现了 Tag 接口,用于创建不带标记体的自结束标签,这些标签中可以带属性。 javax.servlet.jsp.tagext.BodyTagSupport 类 该类继承了 TagSupport 类,用于创建带标记体的标签。

TagSupport 类中有一个重要的成员: pageContext ,该成员的功能与 JSP 的内置对象 pageContex 完全相同。通过该对象可以得到其他几个 JSP 对象的引用。这样,我们就可以在 JAVA 类中与JSP 进行交互了。如JspWriter out=pageContext.getOut(); 这一语句可以得到 JSP 内置对象out 的引用,通过 out 我们就可以向客户端浏览器中输出内容了。要使用其他几个 JSP 对象原理与此相同。

通常我们自定义的标签,编写处理程序时使用TagSupport 和BodyTagSupport 即可,不需要涉及到标签体的,继承TagSupport,需要用标签体的继承BodyTagSupport

二、开发例子:1. 开发标签,知道这个标签用于干什么的。设计好模板。并设计好该标签显示的值的来源。

class="java" name="code">package com.piedra.tag;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspTagException;

import javax.servlet.jsp.tagext.TagSupport;

public class HelloWorldTag extends TagSupport{

private static final long serialVersionUID = 1L;

@Override

public int doStartTag() throws JspException {

try {

HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();

String name = (String)request.getAttribute("name" );

pageContext.getOut().write( "Hello World !_" + name + "");//标签占的坑 要显示这些值

} catch (IOException ex) {

throw new JspTagException( "错误");

}

return EVAL_PAGE;

}

}

2. 编写标签类的tld文件,指明要编写的标签类可以传入什么内容,等

如果要学习如何向标签类传入属性值,设置

比如:

< attribute>

< name> num2

< required> true

< rtexprvalue> true

attribute>

tld文件如下:

1.0

1.2

myTag_HW

helloworld

com.piedra.tag.HelloWorldTag tag-class>

empty

3. 在web.xml中配置标签的信息 taglib-uri 和 tld描述文件的地址 taglib-location

/ tlds/hw

/WEB-INF/ tlds/helloworld.tld

4. 之后就能够在jsp引入该标签和使用该标签

This is my JSP page.



zzzzzzzzzzzzzzzzzzzzzzzzz

备注: 在上面的例子中还调用了Struts2实现的TagAction,在TagAction中我们在request域中设置了key为name的属性值。然后就直接返回并跳转到我们的jsp页面

package com.piedra.action.tag;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class TagAction extends ActionSupport{

private static final long serialVersionUID = 1L;

public String execute(){

TagAction. setRequestAttribute("name","yourname");

return "success";

}

public static void setRequestAttribute(String key,Object obj){

ServletActionContext. getRequest().setAttribute(key, obj);

}

}

action对应的配置:

/tag_1.jsp

备注:如果你没有使用struts,用servlet也是一样的,只需要在doGet或者doPost方法中写上request域的设置值的情况也可以。

效果图如下:

b97eb6604bbb33db7b9f53927b89333a.png

【引用:】http://blog.csdn.net/liangbinny/article/details/6309893

2ae3dc27b0a225684907a4f94a82301b.png

大小: 27.1 KB

查看图片附件


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部