【问题标题】:Create JSP with XML Through an Array通过数组创建带有 XML 的 JSP
【发布时间】:2013-04-06 11:43:35
【问题描述】:

在 Eclipse 中创建动态 Web 项目后,我创建了一些 JavaBean 类,并为每个类创建了一个 JSP 文件,该文件将返回一个 XML。

如:

豆子:

package com.beans;
public class Program {
    private String programID = "123";
    private String programName = "Morning show";
    private String startTime = "1365238800";
    private String endTime = "1365242400";
    public String getProgramID() {
        return this.programID;
    }
    public String getProgramName() {
        return this.programName;
    }
    public String getStartTime() {
        return this.startTime;
    }
    public String getEndTime() {
        return this.endTime;
    }
}

Jsp:

<?xml version="1.0" encoding="ISO-8859-1"?>
<%@ page contentType="text/xml;charset=ISO-8859-1" %>
<jsp:useBean id="programXML" class="com.beans.Program"/>
<Program>
    <ProgramName><% out.print(programXML.getProgramID()); %></ProgramName>
    <ProgramType><% out.print(programXML.getProgramName()); %></ProgramType>
    <startTime><% out.print(programXML.getStartTime()); %></startTime>
    <endTime><% out.print(programXML.getEndTime()); %></endTime>
</Program>

服务器为http://localhost:8080/Project/Program.jsp请求返回以下示例:

 <Program>
  <ProgramName>123</ProgramName> 
  <ProgramType>Morning show</ProgramType> 
  <startTime>1365238800</startTime> 
  <endTime>1365242400</endTime> 
  </Program>

这是我所期望的 XML。现在,我想修改 bean/jsp 文件以接收包含数组的 XML,如下结构:

<ProgramList>
 <Program>
   ...
 </Program>
 <Program>
 ...
 </Program>
</ProgramList>

你能给我建议如何修改 bean/jsp 吗?

【问题讨论】:

  • 如果目标是返回 XML,为什么不使用像 JAXB 这样的编组框架,它会自动将您的 bean 转换为 XML,而不需要任何 JSP?
  • 主要思想是创建一个java服务器,它会为一个URL客户端请求返回一个特定的xml结构。通过 URL 请求返​​回并成为 XML 很重要。我刚刚发现这种方法是一种可能的解决方案,因此欢迎提出任何建议:)
  • 因此我的建议是使用诸如 JAXB 之类的编组框架,它会自动将您的 bean 转换为 XML,而无需任何 JSP。
  • 谢谢你的建议,我试试那个框架,好像很有用。

标签: java xml arrays jsp javabeans


【解决方案1】:

我认为您应该创建另一个名为 ProgramList 的 Bean,其中只包含一个 ArrayList&lt;Program&gt;

public class ProgramList {

  private ArrayList<Program> list;

  public ArrayList<Program> getList() {
    return this.list;
  }
  public void setList(ArrayList<Program> list) {
    this.list = list;
  }
}

然后你可以在你的 JSP 中使用 JSTL forEach 来打印程序列表。

<?xml version="1.0" encoding="ISO-8859-1"?>
<%@ page contentType="text/xml;charset=ISO-8859-1" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="programList" class="com.beans.ProgramList"/>
<ProgramList>
  <c:forEach var="program" items="${programList.list}">
    <Program>
      <ProgramName>${program.programID}</ProgramName>
      <ProgramType>${program.programName}</ProgramType>
      <startTime>${program.startTime}</startTime>
      <endTime>${program.endTime}</endTime>
    </Program>
  </c:forEach>
</ProgramList>

如果您不熟悉,请查找here JSTL 教程。

【讨论】:

  • 那么 JSP 文件呢?我应该只给出一个 xlm.getProgramlist 方法请求,它会返回正确的结构?
  • 我再次编辑以改进通过 JSTL 访问字段的代码......
  • 谢谢MikO,我正在将它导入到我的项目中,希望它能正常工作(只是与一些未知标签作斗争-但是我已经导入了jstl库)。再次感谢:)
  • 您应该使用&lt;c:out value="${program.programName}"/&gt;,除非您绝对确定该属性永远不会包含必须进行XML转义的字符(例如&lt;&gt;
  • @JBNizet 完全正确。我还添加了指向 Java EE JSTL 教程的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多