使用jsp自定义标签库实现数据列表显示模拟cms4j中的标签库效果

简介:


文章标题: 使用jsp自定义标签库实现数据列表显示模拟cms4j中的标签库效果

 

作者: javaboy2012
Email:yanek@163.com
qq:    1046011462

 

 

cms4j中调用方式:

 

 

下面例子实现类似效果:

 

运行效果:

 

具体如下:


jsp调用代码:


<%@ page language="java" import="java.util.*,com.yanek.cms.vo.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/tags/my-cms" prefix="myTag" %>
<body>
<myTag:articleListTag  cateid="1">
 
    <%=article_info.getId() %>------
            <%=article_info.getTitle() %> <br>
           
            ${article_info.id }---- ${article_info.title }<br>

</myTag:articleListTag>
<hr>

<myTag:articleListTag  cateid="2">
 
    <%=article_info.getId() %>------
            <%=article_info.getTitle() %> <br>
           
            ${article_info.id }---- ${article_info.title }<br>

</myTag:articleListTag>
 </body>
</html>

 

标签库定义


<!-- articleListTag start -->

    <tag>

       <name>articleListTag</name>

       <tag-class>com.yanek.cms.tag.ArticleTag</tag-class>

   
       <body-content>jsp</body-content>
   
      <variable>
        <name-given>article_info</name-given>
        <!--<name-from-attribute>name</name-from-attribute>-->
        <variable-class>com.yanek.cms.tag.Article</variable-class>
        <declare>true</declare>
        <scope>NESTED</scope>
      </variable>

       <attribute>
        <name>cateid</name>
        <required>true</required>
       </attribute>
 
</tag>

<!-- articleListTag end -->

 


标签库类

package com.yanek.cms.tag;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class ArticleTag extends BodyTagSupport {

 private Iterator it;// 要迭代的对象
 private int cateid; // 文章类别id
 
 public final static String name = "article_info";

 @Override
 public int doEndTag() throws JspException {
  try {
   if (bodyContent != null) {
    bodyContent.writeOut(bodyContent.getEnclosingWriter());
   }
  } catch (IOException e) {
   e.printStackTrace();

  }
  return EVAL_PAGE;
 }

 @Override
 public int doStartTag() throws JspException {

  //这里根据文章分类,构造不同的列表数据,实际可以根据数据库获取
  List<Article> articles = new ArrayList<Article>();
  if (cateid == 1) {
   articles.add(new Article(1, "asp"));

   articles.add(new Article(2, "jsp"));
  } else {
   articles.add(new Article(3, "php"));

   articles.add(new Article(4, "java"));
  }
  it = articles.iterator();

  if (it == null) {
   return SKIP_BODY;

  } else {
   return continueNext();
  }
 }

 private int continueNext() {
  if (it.hasNext()) {
   pageContext.setAttribute(name, it.next(), pageContext.PAGE_SCOPE);
   return EVAL_BODY_TAG;
  } else {

   return SKIP_BODY;
  }
 }

 @Override
 public int doAfterBody() {
  return continueNext();
 }


 public int getCateid() {
  return cateid;
 }

 public void setCateid(int cateid) {
  this.cateid = cateid;
 }

}

 

标签库引用实体类

package com.yanek.cms.tag;

public class Article {
 
 private int id;
 private String title;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public Article(int id, String title) {
  super();
  this.id = id;
  this.title = title;
 }
 
 public Article() {
  super();
  this.id = id;
  this.title = title;
 }
 
 
 

}

 

几点说明:标签调用是显示list中对象时采用的脚本变量名字article_info 是在标签库定义文件和标签库类中定义的,如下

    <variable>
        <name-given>article_info</name-given>
        <!--<name-from-attribute>name</name-from-attribute>-->
        <variable-class>com.yanek.cms.tag.Article</variable-class>
        <declare>true</declare>
        <scope>NESTED</scope>
      </variable>

标签库类中
public final static String name = "article_info";
pageContext.setAttribute(name, it.next(), pageContext.PAGE_SCOPE);

 

显示列表中对象的方式有2种方式:

调用类的方法:  在eclipse中可以方法提示。

        <%=article_info.getId() %>---- <%=article_info.getTitle() %>

jstl显示:

       ${article_info.id }---- ${article_info.title }

 

 

目录
相关文章
|
5月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
6月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
6月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
195 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
8月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 3
JSP自定义标签允许开发人员创建可重用的组件,简化页面逻辑。在JSP 2.0及以上版本,可通过继承`SimpleTagSupport`并覆写`doTag()`方法来创建自定义标签,如`HelloTag`,它有一个`message`属性。属性值通过setter方法`setMessage()`设置。在TLD文件中定义该属性后,可在JSP页面使用`&lt;ex:Hello message=&quot;This is custom tag&quot;/&gt;`来调用,输出定制的文本。
42 0
|
8月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 4
**JSP自定义标签允许创建用户定义的语言元素。它们转换为Servlet中的tag handler,在执行时由Web容器调用。使用SimpleTagSupport继承并重写doTag()方法可创建简单标签。标签可设置属性,如message,通过setter方法访问。TLD文件定义属性元数据,JSP页面则通过prefix和uri引用。例如,&lt;ex:Hello message=&quot;...&quot;/&gt; 显示定制消息。属性可配置为必需、类型、描述及是否为JspFragment。**
37 0
|
8月前
|
搜索推荐 Java 容器
JSP 教程 之 JSP 自定义标签 2
**JSP自定义标签允许用户创建个性化标签,简化页面逻辑。在JSP 2.0中,通过继承`SimpleTagSupport`并重写`doTag()`可创建简单标签处理器。示例展示了一个名为`Hello`的自定义标签,它接收并显示标签体内容。TLD文件配置了标签元数据,JSP页面引用该标签并展示“这是消息主体”。**
38 0
|
8月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 1
**JSP自定义标签简介**:扩展JSP功能,创建用户定义标签,通过Servlet容器调用Tag Handler。在JSP 2.0中,使用SimpleTagHandlers简化定制。以&quot;Hello&quot;标签为例,创建`HelloTag`类继承`SimpleTagSupport`,重写`doTag()`打印消息。编译后,在`custom.tld`定义标签库,JSP页面引用后即可使用。例如 `&lt;ex:Hello/&gt;` 显示 &quot;Hello Custom Tag!&quot;。
41 0
|
8月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 6
**JSP JSTL 摘要:** JSTL是JSP的标签库,包含核心、格式化、SQL、XML和函数5类标签。它用于执行常见任务,如迭代、条件判断和XML操作。JSTL函数库提供字符串处理函数,如`contains()`, `endsWith()`, `escapeXml()`等,方便XML和HTML处理。通过`&lt;%@ taglib %&gt;`导入,如`fn:trim()`用于去除字符串两端空白。
53 5
|
8月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 5
JSP的JSTL是用于简化JSP开发的标签库,包括核心、格式化、SQL、XML和函数五大标签集。XML标签库处理XML文档,如`&lt;x:out&gt;`显示XML数据,`&lt;x:parse&gt;`解析XML,`&lt;x:forEach&gt;`遍历节点。使用前需添加XercesImpl.jar和xalan.jar到Tomcat的lib目录。
59 6
|
4月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
113 0