2015-05-04 60 views
0

你好,我仍然有一個問題,我不能在jsp頁面顯示任何數據,你可以在代碼中看到我已經將java類導入到jsp中並創建了類的對象並從Java類中調用輸出的方法,但它看起來有問題..請幫助。 (請解釋一下你的意見,因爲有些淡淡更難理解 - 感謝)顯示Java類到JSP頁面

package mydata; 
import org.hyperic.sigar.CpuInfo; 
import org.hyperic.sigar.Sigar; 
import org.hyperic.sigar.SigarException; 

public class test { 
    public test() { 
     Sigar sigar = new Sigar(); 
     String output = " "; 
     CpuInfo[] cpuInfoList = null; 
     try { 
      cpuInfoList = sigar.getCpuInfoList(); 
     } catch (SigarException e) { 
      e.printStackTrace(); 
      return; 
     } 
     for (CpuInfo info : cpuInfoList) { 
      output += "\nCPU\n"; 
      output += "Vendor: " + info.getVendor() + "\n"; 
      output += "Clock: " + info.getMhz() + "Mhz\n"; 
      output += "Core: " + info.getCoresPerSocket(); 
     } 
     System.out.println(output); 
    } 
    public static void main(String[] args) { 
     test main = new test(); 
    } 
} 

//JSP Code 
<%@page import="mydata.test"%> 
<%@page import="org.hyperic.sigar.Sigar"%> 
<%@page import="org.hyperic.sigar.CpuInfo"%> 
<%@page import="org.hyperic.sigar.SigarException"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 

     <h1>Welcome to data page</h1> 
     <%@ page import="mydata.test.*"%> 
     <% 

     String output=""; 
     CpuInfo[] cpuInfoList = null; 
     test ts = new test(); 
     Sigar sigar = new Sigar(); 
     out.println(output); 
     out.println(sigar.getCpuInfoList()); 
%> 
    </body> 
</html> 
+0

Sigar類與sigar.getCpuInfoList()方法在哪裏?您正在打印:out.println(輸出);這是「」,然後out.println(sigar.getCpuInfoList()); –

+1

不要在JSP頁面中使用Java代碼。這是壞習慣,而是使用JSTL。 – OO7

+0

有什麼不對?任何異常/錯誤? – SMA

回答

1

需要聲明的輸出變量的類範圍,並添加一個getter方法返回它。
然後,在調用測試類的構造函數之後,使用getter方法來檢索輸出字符串。 例如:

// Java 
public class test { 
    private String output; 
    public String getOutput() { 
     return this.output; 
    } 

// JSP 
<% 
    test ts = new test(); 
    out.println(ts.getOutput()); 
%> 
0

在servlet中使用的輸出流,以輸出該含量大於標準輸出流不同(!出= System.out的)。

有兩種方法來解決問題:

  1. 傳遞輸出流對象到您的測試方法,在你的類:

    test(OutputStream out) { 
        ... 
        out.println(output); 
    } 
    
  2. 返回從測試方法,你的輸出:

    StringBuilder buffer = new StringBuilder(); 
    for (...) { 
        buffer.append(...); 
    } 
    return buffer.toString(); 
    

我建議使用StringBuilder而不是連接字符串對象,因爲這會顯着影響性能。

+0

感謝軒轅求你的幫助我已經厭倦了你的注意,但也似乎沒有出來(數據輸出)?我正在嘗試所有的通知和幫助兩個星期沒有結果?如果我運行的代碼作爲Java應用程序工作正常,但我不能拉任何數據到任何網頁,這是我在找什麼,但不幸的是迄今沒有辦法 – Sadigain