如何在jsp中下载选项以下载显示的数据

时间:2013-10-30 07:07:41

标签: jsp jstl

请为我的要求提供任何帮助     我正在编写jsp代码来从bean获取数据并以表格格式显示该数据,除了我需要在底部放置下载选项以下载显示的表格在" csv"或者" Excelsheet"格式。

我的代码就像这样

     <%@page contentType="text/html" pageEncoding="UTF-8"%>
     <%@ page import = "com.preva.vo.StoppageDetails"%>
     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
     <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      <html>
      <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

       <link href="css/cal.css" rel="stylesheet" type="text/css" />
    <link href="css/sty.css" rel="stylesheet" type="text/css" />
    <link href="css/tabborder.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
             <jsp:include page="Header.jsp" />

        <table align=center border=0 cellspacing=0 cellpadding=0>
        <tr ><td colSpan=5 align=center><b>Overspeed Details</b></td></tr>
        <tr ><td colspan=5 align=center>
        <b><%=request.getParameter("vehicleId") %></b></td></tr>
        <tr><td>From &nbsp;
         <%=session.getAttribute("fromdate") %> 
          &nbsp;to&nbsp;              
        <%=session.getAttribute("startdate") %></td></tr>

        </table><br></br>

 <table class='rptTbl_sortable' width='80%' align=center  border='0'>

      <thead>
      <tr class="rptHdrRow">
     <th id="index" class="rptHdrCol_sort" nowrap>DeviceID</th>
     <th id="date" class="rptHdrCol_sort" nowrap>Date</th>
     <th id="time" class="rptHdrCol_sort" nowrap>Speed</th>
     <th id="statusdesc" class="rptHdrCol_sort" nowrap>Status</th>
             <th id="address" class="rptHdrCol_sort" nowrap>Address</th>
    </tr>
      </thead>
     <tbody>

       <c:forEach items="${sessionScope.overspeeddetails}" var="overspeeddetailsvar">
       <tr class="rptBodyRowOdd">
         <td><c:out value="${overspeeddetailsvar.deviceID}">     </c:out></td>
     <td><c:out value="${overspeeddetailsvar.TIMESTAMP}"></c:out></td>  
      <td><c:out value="${overspeeddetailsvar.speed}"></c:out></td>
      <td><c:out value="${overspeeddetailsvar.statuscode}"></c:out></td>
      <td><c:out value="${overspeeddetailsvar.address}"></c:out></td>

     </tr>
            <tr class="rptBodyRowEven">
         <td><c:out value="${overspeeddetailsvar.deviceID}"></c:out></td>
            <td><c:out value="${overspeeddetailsvar.TIMESTAMP}"></c:out></td>   
         <td> <c:out value="${overspeeddetailsvar.speed}"></c:out></td>
       <td><c:out value="${overspeeddetailsvar.statuscode}"></c:out></td>
       <td><c:out value="${overspeeddetailsvar.address}"></c:out></td>

         </tr>  </c:forEach>    
    </tbody>            
  </table> 
    </body>
    </html>

2 个答案:

答案 0 :(得分:0)

因为您的数据存储在会话中,所以您只需为CSV创建新的JSP,其中包含:

  • <c:forEach>
  • 的修改版本
  • text/csv作为<@ page指令
  • 中声明的内容类型
  • Content-disposition标头设置为attachment

此页面将从您的主JSP链接。对于excel二进制格式,您可能需要一些库。从架构的角度来看,这是MVC模式的典型示例:您有一个控制器,它准备模型(在您的情况下为超速详细信息)和多个视图:html table,csv和excel文件。

答案 1 :(得分:0)

让它指向一些servlet,它将PDF文件写入响应的输出流,并且重要的是,将内容处置标头设置为“attachment”。这将导致web浏览器弹出“另存为”对话框(您自己调用的“下载选项”)。

您可以从中获得一些想法:more