如何将JSP中的字段与文本文件分开?

时间:2015-06-01 07:09:46

标签: jsp text field

我有一个perl脚本,它搜索指定文件夹中的最新修改文件。当搜索结束时,此脚本将数据放入文本文件结构中:

<div style="padding:50px">
    <div class="tip left">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor. Duis placerat tellus at erat pellentesque nec ultricies erat molestie. Integer nec orci id tortor molestie porta. Suspendisse eu sagittis quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur quam a sapien egestas eget scelerisque lectus tempor. Duis placerat tellus at erat pellentesque nec ultricies erat molestie. Integer nec orci id tortor molestie porta. Suspendisse eu sagittis quam.</div>
</div>

...等

对于显示器我必须使用jsp,因为服务器运行Tomcat。

这是我的index.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

现在,&#34;列表&#34;变量包含COMP和DATE字段数据。

所以,我的问题是,如何将JSP中的字段(COPM,DATE)与文本文件分开?

感谢您的回答!

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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放在请求属性中,转发到jsp文件并使用JSP格式化结果 Java代码是JSP难以测试和调试不会将智能放入其中。

答案 2 :(得分: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;
}

答案 3 :(得分:-1)

文件中的数据存储为密钥&amp;价值对。 您在JSP中需要做的是,将文件读取为steam,您需要使用java.util.Properties类作为属性文件读取。

以下代码应该有效。

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

尝试一下。