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域的设置值的情况也可以。
效果图如下:

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

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