一个类似于Logic与Bean的Jsp标签示例
示例说明:
首先通过Logic标准的校验,是否存在相应的属性,如果不存在,就不继续执行其中包含的内容体,如果存在则执行其中包含的内容体,调用方式如:
<mytest:logic>
<mytest:bean xpath="/Document/Element[@name=\"e2\"]">
</mytest:bean>
</mytest: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目录下,其内容为:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, 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.0</jsp-version>
<short-name>mytest</short-name>
<uri>http://mytest.com</uri>
<display-name>这是我的测试标签</display-name>
<description>
测试标签
</description>
<tag>
<name>logic</name>
<tag-class>test.MyLogic</tag-class>
<description>
My Logic
</description>
</tag>
<tag>
<name>bean</name>
<tag-class>test.MyBean</tag-class>
<description>
My Bean
</description>
<attribute>
<name>xpath</name>
<required>true</required>
</attribute>
</tag>
</taglib>
4、web.xml中加入如下配置:
<taglib>
<taglib-uri>/WEB-INF/tagtld/test/mytest.tld</taglib-uri>
<taglib-location>
/WEB-INF/tagtld/test/mytest.tld
</taglib-location>
</taglib>
5、测试JSP页面:
<%@ taglib uri="/WEB-INF/tagtld/test/mytest.tld" prefix="mytest"%>
<%@ page import="org.jdom.*"%>
<%@ page import="util.JDomUtil"%>
<%
String xmlString="<?xml version=\"1.0\" encoding=\"gb2312\"?><Document><Element name=\"e1\">first</Element><Element name=\"e2\">second</Element></Document>";
Document xmlDoc=JDomUtil.getDocument(xmlString);
//你可以将下面这一句屏蔽看一下效果
request.setAttribute("xmlDoc", xmlDoc);
%>
<mytest:logic>
<mytest:bean xpath="/Document/Element[@name=\"e2\"]">
</mytest:bean>
</mytest:logic>
分享到:
相关推荐
Struts标签库html标签、logic标签、bean标签
jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑
Struts标签 logic标签所有应用源代码 看懂了这个,你就会明白bean标签所有的使用方法 我还上传了html标签、bean标签,这三种标签在Struts中用得最多的,希望能给你一些帮助
Struts Logic标签Struts Logic标签Struts Logic标签Struts Logic标签Struts Logic标签
Struts标签from,bean,logic.pdf
重要知识Struts标签from,bean,logic.pdf
Struts标签 bean标签所有应用源代码 看懂了这个,你就会明白bean标签所有的使用方法 我还上传了html标签、logic标签
我就是靠这个文档实现logic:iterate的循环的 struts 标签 logic:iterate使用 logic:iterate <br>第一页 是struts官方的说明, 第二页 是个例子 第三页 是我实现的arrayList放入标签的方法。 这是页面...
Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。
Struts标签 -LOGIC标签
1. Map里存放的是bean时 <br><logic:iterate id="destMap" name="srcMap"> <br> <bean:define id="bean" name="destMap" property="value" /> <br> <bean:write name="bean" property="name" /> <br></...
NULL 博文链接:https://sd8089730.iteye.com/blog/677243
Bean 标签: 在访问JavaBeans 及其属性,以及定义一个新的bean 时使用 Logic 标签: 管理条件产生的输出和对象集产生的循环 Template标签:随着Tiles框架包的出现,此标记已开始减少使用 Nested标签: 增强对...
关于struts学习中遇到的关于logic标签的一些问题和解答,logic标签的一些问题和解答。
struts-logic iterate标签学习指南 这标签还不错
在将JavaBean代码放入JSP 页面时这个库提供实质性的加强的功能以改善其性能,它由标签提供。 ·struts-logic标签库。这个库可管理有条件的文本生成,在对象集合中循环以重复生成输出文本和应用程序流程管理。 ·...
Bean 标签 在访问JavaBeans 及其属性,以及定义一个新的bean 时使用 Logic 标签 管理条件产生的输出和对象集产生的循环 Template 标签 随着Tiles框架包的出现,此标记已开始减少使用 Nested 标签 增强对其他...
struts中logic标签的汇总,孙卫琴老师struts书中的例子
精通struts1的logic标签的使用方法,比传统的web jsp技术更能节省代码开销,提高系统的运行效率