Java cgi näide: datafailist htmli tegemine
Allikas: Lambda
list.cgi pathid tuleb muidugi ära muuta, siin toodud töötasid Taneli läpakas. Samuti peaks lõpuks olema üks rida, mitte kaks:
#!/bin/sh cd /tmp /usr/local/java/j2sdk1.4.2_02/bin/java -cp /home/tanel/Ms/SEATS/trunk/www/Katse list $QUERY_STRING
data.txt oli selline:
http://www.itcollege.ee,itk,10,2,1 http://www.epl.ee,epl,5,3,2
ning lõpuks java programm list.java:
import java.io.*; public class list { public static void main(String[] args) { String ls_str; String filename; String[] pieces; int nr=1; System.out.println("content-type: text/html"); System.out.println(""); System.out.println("<p>Head lingid:</p><p></p>"); //System.out.println(args[0]); filename="/home/tanel/Ms/SEATS/trunk/www/Katse/data.txt"; File file = new File(filename); // All file I/O operations must be done within a try/catch statement try { // Set up the proper readers and writers FileReader file_reader = new FileReader(filename); BufferedReader br_reader = new BufferedReader(file_reader); // Get the first line of the file String line = br_reader.readLine(); // check to see if it is null - end of file while (line != null) { // print line to output file //System.out.println(line); pieces=split(line); if (pieces.length>1) { System.out.println(nr+". "); System.out.println( "<a href=\""+pieces[0]+"\">"+ pieces[1]+ "</a>"); System.out.println(pieces[2]+"+ ja "+ pieces[3]+"-"); System.out.println("<br>"); nr++; } // get next line of input file line = br_reader.readLine(); } // while loop // Finally you must close input and output streams! file_reader.close(); } //try // catch any exceptions thrown catch (IOException e) { //print error and exit program System.out.println(e); System.exit(1); } } public static String[] split(String input) { int len; int count; int pos; String separator=","; int ws; int we; String[] words; /* count the number of separators: then we know the required size of the array */ len=input.length(); count=0; pos=-1; for(;;) { // loop over all occurrences of separator in input pos=input.indexOf(separator,pos+1); // search from last pos found! if (pos<0) break; // none found after pos count++; } // let us print some useful debug information //System.out.println("\nFound "+count+" separators "+separator); // make a suitable array words=new String[count+1]; // loop again over the input, this time collecting strings ws=0; // word start we=ws+1; // word end count=0; pos=-1; for(;;) { // again, loop over all occurrences of separator in input pos=input.indexOf(separator,pos+1); // search from last pos found! if (pos<0) { // no separator found after pos: take to end of string we=input.length(); } else { // separator found we=pos; } words[count]=input.substring(ws,we).trim(); // take substring, remove spaces ws=pos+separator.length(); // this is where the next word will start count++; if (pos<0) break; } return words; } }