webForumDet fria alternativet

Skapa HTML kod med JAVA?

5 svar · 441 visningar · startad av SnowJim

SnowJimMedlem sedan sep. 200420 inlägg
#1

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

erkaMedlem sedan dec. 19994 597 inlägg
SnowJimMedlem sedan sep. 200420 inlägg
#3

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

ViktorMedlem sedan aug. 20021 710 inlägg
#4

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

SnowJimMedlem sedan sep. 200420 inlägg
#5

Verkar kunna vara en bra lösning, du känner inte till några mer ingånde Torturials på detta?

Jag är nämligen inte enormt insatt i Java än, har bara hållt på med det någon mån. Men jag har ju pysslat mycket med C.net och liknande.

//Jimmy

SnowJimMedlem sedan sep. 200420 inlägg
#6

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

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb