2015-06-01 20 views
0

我有一個perl腳本,它是搜索指定文件夾中的最新修改文件。當搜索結束該腳本將數據放入一個文本文件導入結構:如何將JSP中的字段從文本文件中分離出來?

[COMP] = folder1 
    [DATE] = 2015.06.01 08:12 
    [COMP] = folder1 
    [DATE] = 2015.06.01 05:27 
    [COMP] = folder1 
    [DATE] = 2015.05.31 11:44:44 

...等

爲了顯示我必須使用JSP,因爲服務器運行Tomcat。

這裏是我的index.jsp:

<%@ page import = "java.io.*, java.util.*" %> 

<% 
ServletContext context = getServletContext(); 
String file = (context.getRealPath("/list.txt")); 
String s, list = new String(); 

try { 
     DataInputStream in = 
     new DataInputStream(
     new BufferedInputStream(
     new FileInputStream(file))); 
       while((s = in.readLine())!= null) { 
         list += s + "\n"; 
       } 
     in.close(); 
} 
catch(Exception e) {System.out.println(e);} 
%> 
<pre> 
<%=list%> 
</pre> 

現在, 「列表」 變量包含COMP和日期字段的數據。

所以,我的問題是,我怎樣才能從文本文件中分離JSP中的字段(COPM,DATE)?

感謝您的答案!

回答

-1

文件中的數據存儲爲鍵值&值對。 你在JSP中必須做的事情是,讀取文件爲蒸汽文件,而需要使用java.util.Properties類讀取屬性文件。

下面的代碼應該可以工作。

try{ 
    Properties props = new Properties(); 
    props.load(file); 
    String value1 = props.get("[COMP]"); 
    String value2 = props.get("[DATE]"); 
} 

試一試。

+0

它不起作用。你只會得到最後兩行。試試看。 – EJP

0

使用索引來跟蹤行號。如果是偶數,則添加到COMP列表,否則添加到DATE列表。

<%@ page import = "java.io.*, java.util.*" %> 

<% 
ServletContext context = getServletContext(); 
String file = (context.getRealPath("/list.txt")); 
String s = new String(); 
List<String> compList = new ArrayList<String>(); 
List<String> dateList = new ArrayList<String>(); 
int i = 0; 

try { 
    DataInputStream in = 
    new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(file))); 
      while((s = in.readLine())!= null) { 
        if(i % 2 = 0) { 
        compList.add(s); 
        } else { 
        dateList.add(s); 
        } 
        i++; 
      }  
    in.close(); 
} 
catch(Exception e) {System.out.println(e);} 
%> 
<pre> 
<%=compList%> 
<%=dateList%> 
</pre> 
0

他們是在文本文件不同的線路。你只需要單獨閱讀:

DataInputStream in = 
    new DataInputStream(
    new BufferedInputStream(
    new FileInputStream(file))); 
    String comp, sdate; 
    while(True) { 
     comp = in.readLine(), 
     if (comp == null) { break;} 
     sdate= in.readLine(), 
     if (sdate== null) { break;} 
     // you have comp and sdate : use them and put result in list 
     } 
    in.close(); 

可以使用java.util.regex包解析每一個人行。但是如果你真的想要一個很好的演示文稿,你最好使用一個servlet解析輸入文本文件,將這些元素作爲一個List放入一個request屬性中,轉發到jsp文件並使用JSP來格式化結果Java代碼是JSP很難測試和調試不要把智能放在裏面。

0

感謝您的答案!這裏是我的解決方案(不是全部,手機代碼):

my %hash =(); 

loop start // folder read etc 
some if statement 

if ($before_on_week le $d) 
    { 
    $row = $row . " <td>$d</td>\n"; 
    } 
else 
    { 
    $row = $row . " <td><b><font color=red>$d</font></b></td>\n"; 
    } 

    $row = $row . " <td>/var/www/$path</td>\n"; 
    $row = $row . "</tr>\n"; 
    #print FILE $row; 
    $hash{"$d $path"} = $row; 

loop end 

foreach my $key (sort keys %hash) { 
    my $row = $hash{$key}; 
    print FILE $row; 
} 
相關問題