Tja!
Finns det något vis att skapa HTML sidor med JAVA? jag har nämligen ett program som ska visa raporter på skärmen, och jag tänkte att det bästa hade varit om jag kunde visa dem som HTMl sidor.
MVH
Jimmy
5 svar · 441 visningar · startad av SnowJim
Tja!
Finns det något vis att skapa HTML sidor med JAVA? jag har nämligen ett program som ska visa raporter på skärmen, och jag tänkte att det bästa hade varit om jag kunde visa dem som HTMl sidor.
MVH
Jimmy
Du har ju JSP och Servlets
http://java.sun.com/products/jsp/
http://java.sun.com/products/servlet/index.jsp
Okay, men det fungerar att köra det lokalt?
För dett är nämligen ett lokalt program som öppnar några filer och visar raporterna på skärmen.
Det ka inte ha något med internet att göra, och man ska inte behöva ha några extra program igång.
//Jimmy
Ett sätt är att skapa rapporter i XML format och sedan ha en XSLT mall som konverterar XML filen till HTML. Ett annat är att du själv skriver en mall för din HTML fil som du sedan parsar och lägger in den data som ska in i dokumentet.
Tex såhär,
<html>
<body>
Rapport <!--DATE-->
<hr/>
<table>
<!--REPORT_DATA-->
</table>
</body>
</html>
Java koden
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Timestamp;
/**
*
* Document History
* Created on 2004-sep-23 by viktor
*
* @author viktor
*/
public class Test
{
public static void main(String[] args)
{
try
{
//Öppna filen mall.tpl för läsning.
BufferedReader br=new BufferedReader(new FileReader("mall.tpl"));
//Öppna/skapa filen rapport???.html för skrivning. ??? i fil namnet blir en massa siffror, antalet milli sekunder sedan 1970 tror jag, bara för att få ett unikt filnamn.
BufferedWriter bw=new BufferedWriter(new FileWriter("rapport"+System.currentTimeMillis()+".html"));
//Skapa en variabel som vi lägger den inlästa datan i
String line=null;
//Vår rapport, skapas med hjälp av datan som vi vill rapportera om
String reportData="<tr><td>Hej</td><td>Hopp</td></tr><tr><td>Hej</td><td>Hopp</td></tr>";
//Läs en rad i filen tills filen är slut, dvs null retuneras när vi försöker läsa en rad.
while((line=br.readLine())!=null)
{
//Sök efter <!--DATE--> och ersätt det med dagens datum och tid, om <!--DATE--> inte finns i strängen line gör inget.
line=line.replaceAll("<!--DATE-->",new Timestamp(System.currentTimeMillis()).toString());
//Samma som ovan men sök efter <!--REPORT_DATA--> och ersätt det med det som finns i variabeln reportData
line=line.replaceAll("<!--REPORT_DATA-->",reportData);
//Skriv raden till den nya html filen.
bw.write(line+"\n");
}
//Stäng båda filerna
br.close();
bw.close();
}
catch(IOException io)
{
//Om något gick fel skriv vad som gick fel.
io.printStackTrace(System.err);
}
}
}
Kanske inte det mest effektiva men det fungerar :)
/Viktor
Har Provat lite nu med din kod, och den funkar ju fin fint. Ska bara komma på hur jag ska bygga upp mallarna.
Sidorna kommer ju ha olika storlekar, alltså vissa kommer vara korta med andra kommer vara långa så jag får väll helt enkelt komma på någon bra loop som bygger ut sidan så mycket som det behövs(borde inte vara några problem).
I dagens läge läses raporterna in till en JPanel och detta går otroligt seg i Solaris, så jag hoppas på att HTML kan fixa detta.
Det jag gör är alltså att skriva ut i onpint metoden på JPanel(2 st samtidigt) och sen när man scrollar går det enormt segt efter som den ritar om allting varje gång. Jag löste detta genom att den skapar stora bitmap bilder istället, men det verkar också lite otypligt.
Det är dock ett litet problem till, jag måste kunna ändra storleken på raporten på ett snabbt sätt, alltså jag måste kunna zooma. Kan man göra detta med JEditorPane? Och tror ni att jag kommer få några prestanda lyft?
//Jimmy