`
JAVA天地
  • 浏览: 673381 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

一个类似于Logic与Bean的Jsp标签示例

阅读更多

一个类似于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>

分享到:
评论

相关推荐

    struts1 html&&bean&&logic 标签

    `&lt;bean:define&gt;`标签可以用来在JSP上下文中定义一个变量,`&lt;bean:write&gt;`用于输出JavaBean属性的值,而`&lt;bean:include&gt;`则可以将另一个包含JavaBean的JSP页面嵌入当前页面。通过使用这些标签,开发者可以在JSP页面中...

    struts1-bean标签

    - **&lt;bean:include&gt;**:用于包含另一个Web资源,类似于标准JSP `&lt;jsp:include&gt;` 标签。 #### 总结 通过上述介绍可以看出,Struts 1的Bean标签库非常强大且灵活,能够有效地帮助开发者处理与JavaBean相关的操作。...

    Struts标签from,bean,logic.pdf

    标题“Struts标签from,bean,logic.pdf”和描述“Struts标签from,bean,logic.pdf”指明了本文档所讨论的核心内容是Struts框架中的一些标签用法。Struts标签库是Struts框架的重要组成部分,它允许开发者以声明方式在...

    logic标签库.pdf

    由于提供的文件内容是一个关于“logic标签库.pdf”的摘录,内容涉及了一系列与JSP页面开发相关的标签和属性。为了使内容更加通顺,以下是对这些知识点的整合和解释,将尽量避免直接引用原始文档的文字以减少OCR错误...

    jsp中htmlselect标签的用法

    这个标签在Struts框架中尤其常见,因为它与ActionForm对象的属性紧密关联,方便数据的提交和回显。以下是对`html:select`标签的详细解释和使用方法: ### 基本结构 `html:select`标签的基本结构如下: ```jsp ...

    logic标签的问题及解答

    在Struts的学习过程中,`&lt;logic:iterate&gt;`标签是经常遇到的一个,它允许我们遍历数组、Collection、Enumeration、Iterator或Map中的元素。 首先,我们来详细解释一下`&lt;logic:iterate&gt;`标签的基本用法: 1. **遍历...

    struts1 table标签中Logic的使用属性

    在Struts框架中,`table`标签用于在JSP页面中展示数据,而`Logic`标签则提供了条件判断的能力,这对于动态显示内容非常有用。以下是对给定文件中提到的Logic标签属性进行详细解释: #### 1. `logic:empty` 该标签...

    Struts中logic标签的使用

    7. **logic:include**:动态包含另一个JSP页面。 8. **logic:forward**:根据条件重定向到不同的JSP页面。 三、使用示例 假设我们有一个ActionForm对象`UserForm`,其中包含一个属性`isActive`。我们可以在JSP页面...

    JSP中table的td标签迭代循环

    给出的代码示例展示了如何在JSP中使用`&lt;logic:iterate&gt;`标签来遍历一个名为`infoContentList`的列表,并将每个元素的`st_img`属性值作为图片源显示在一个表格中。此外,还通过计算当前索引与4取模的结果来实现每四张...

    struts1标签库详解

    * bean:define:定义一个 bean,通常用于将 JavaBean 组件与 Struts 集成。 * bean:header:取回请求头中的值,例如用户代理、语言等。 * bean:include:将一个 JSP 文件包含到当前 JSP 文件中。 * bean:message:...

    struts logic 标签

    Struts Logic标签是Java Struts框架中的一部分,用于在JSP页面中进行条件判断和流程控制,极大地简化了页面逻辑的实现。这些标签提供了一系列的比较和导航功能,使得开发者无需编写JavaScript或Java脚本就能在视图层...

    Struts标签大全.pdf

    - `&lt;bean:include&gt;`标签用于将一个外部文件的内容嵌入到JSP页面中,类似于Servlet中的`&lt;jsp:include&gt;`。 - `&lt;bean:write&gt;`标签用于在页面上显示一个属性的值。 ### Logic标签 Logic标签用于执行逻辑操作,如条件...

    JSP Struts之HTML标签库详解.txt

    以上代码展示了如何使用`&lt;html:form&gt;`、`&lt;html:text&gt;`和`&lt;html:password&gt;`标签创建一个简单的登录表单。 通过上述介绍,我们可以看到Struts HTML标签库不仅提供了丰富的功能来简化表单元素的创建,还支持复杂的条件...

    logic:iterate 是什么,怎么用

    `logic:iterate` 是 Struts 标签库中的一个重要组成部分,主要用于在 JSP 页面中循环遍历集合对象(如 List、Array 或 Map 等)。它能够有效地帮助开发者在前端展示动态数据,尤其适用于需要在页面上显示列表或集合...

    struts标签 struts标签 struts标签

    Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据展示、逻辑控制等。在本文中,我们将深入探讨其中的Bean Tags、HTML Tags和Logic Tags。 1. **Bean ...

    Struts 的三大标签库使用的完整的案例

    `&lt;bean:include&gt;`标签则可以将另一个JSP页面或JavaBean插入到当前页面中。使用Bean标签库,开发者可以更加直观地管理和展示对象的状态,增强代码的可读性。 3. **Logic标签库**: Logic标签库提供了一系列逻辑控制...

    struts的标签库参考表

    ### Struts标签库详解 ...3. **Logic标签**:用于执行条件逻辑和循环操作,类似于if语句和for循环。 #### 四、引入Struts标签库 为了能够在JSP页面中使用Struts标签,首先需要声明相关的标签库: ```jsp ...

Global site tag (gtag.js) - Google Analytics