一个类似于Logic与Bean的Jsp标签示例
示例说明:
首先通过Logic标准的校验,是否存在相应的属性,如果不存在,就不继续执行其中包含的内容体,如果存在则执行其中包含的内容体,调用方式如:
这里有两个类,一个是MyLogic类,一个是MyBean,分别代表上面的logic及bean。
1、MyLogic源程序:
package test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.jdom.Document;
public class MyLogic extends BodyTagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
public MyLogic(){
super();
}
public int doStartTag() throws JspException{
Object object=getDataElement(pageContext);
/*如果属性不存在,就不继续其中包含的内容体了*/
if(object==null){
System.out.println("xmlDoc属性不存在");
return SKIP_BODY;
}
System.out.println("xmlDoc属性存在");
//EVAL_BODY_INCLUDE表示继续执行内容体
return EVAL_BODY_INCLUDE;
}
/*根据属性取对Document对象*/
public Document getDataElement(PageContext pageContext) {
Document root =null;
try{
root= (Document) pageContext.getRequest().getAttribute("xmlDoc");
}catch(Exception e){
}
return root;
}
}
2、MyBean源程序:
package test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.xpath.XPath;
public class MyBean extends BodyTagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyBean(){
super();
}
String xpath;
public String getXpath() {
return xpath;
}
public void setXpath(String xpath) {
this.xpath = xpath;
}
public int doStartTag() throws JspException{
String thisXPath=getXpath();
System.out.println("传入的XPath:"+thisXPath);
Document xmlDoc=(Document) pageContext.getRequest().getAttribute("xmlDoc");
try {
String value=((Element)(XPath.selectSingleNode(xmlDoc, thisXPath))).getText();
/*输出根据XPath取的的值*/
pageContext.getOut().write(value);
/*如果该页面中其它地方不再使用该属性,记得删除,这是一个好习惯*/
pageContext.getRequest().removeAttribute("xmlDoc");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.doStartTag();
}
}
3、tld文件的名称为mytest.tld,将其放在/WEB-INF/tagtld/test目录下,其内容为:
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
测试标签
My Logic
My Bean
4、web.xml中加入如下配置:
/WEB-INF/tagtld/test/mytest.tld
5、测试JSP页面:
<%@ taglib uri="/WEB-INF/tagtld/test/mytest.tld" prefix="mytest"%>
<%@ page import="org.jdom.*"%>
<%@ page import="util.JDomUtil"%>
<%
String xmlString="
Document xmlDoc=JDomUtil.getDocument(xmlString);
//你可以将下面这一句屏蔽看一下效果
request.setAttribute("xmlDoc", xmlDoc);
%>