# JSP: Eingaben als *.txt auf dem Server Speichern



## tu-besucher (12. Jul 2004)

Hallo Zusammen,

auf einer Webseite (JSP und Servlets) werden die Daten eingegeben, ich möchte die Eingaben als Textdatei auf dem Server speichern, damit diese Datei von Anderen Software gelesen werden kann !

Frage: 
 - Wie kann ich die Eingaben auf dem Server Speichern ?
 - Die Trennzeichen zw. die Parameter sollen ";" und "Tabulator" sein, weil die Daten  als Tabelle (";" für Spalten und "Tabulator" für Zeilen) von einem anderen Tool gelesen werden müssen.


```
<%@ page import="java.util.*,java.io.*" %>
<html>
<head>
<title>EinDatei</title>
</head>
<body>
<%
String id = request.getParameter("id");
boolean eingabe = true;
try {
    String filename = application.getRealPath(id + ".txt");
    FileReader file = new FileReader(filename);
    BufferedReader buff = new BufferedReader(file);
    boolean eof = false;
    while (!eof) {
        String entry = buff.readLine();
        if (entry == null)
            eof = true;
        else {
            StringTokenizer entryData = new StringTokenizer(entry, ";");
            String name = (String) entryData.nextElement();
            String lieferTermin = (String) entryData.nextElement();
            String be = (String) entryData.nextElement();
            .........
        } catch (IOException e) {
..........
Für den Rest brauche ich bitte dringend Hilfe von Euch !!!
```

Vielen Dank für eure Unterstützung  :roll: 

Joe


----------



## Heiko (12. Jul 2004)

Also ne Datei abspeichern kannste mit OutputStreams, bzw nem FileWriter.

Ob das allerdings auch auf einem Server geht kann ich dir nicht sagen, ich habe das nur hier auf einem lokalen PC programmiert.

Ich geb dir mal de Code, mit dem ich die Datei erstellt habe. Bei Fragen immer weiter posten.


```
/**
	 * Method StreamSchreiben - Schreibt eine neue Datei mit den Ergebnissen.

	 * @param datei - String Array
	 */
	public static void StreamSchreiben(String[] datei)
	{
		try
		{
			String projekt =
				verzeichnis.substring(verzeichnis.lastIndexOf("\\") + 1);
			if (projekt.equals("wsad"))
			{
				projekt = "AlleProjekte";
			}
			File test = new File("Ergebnis_" + projekt + ".html");
			FileOutputStream test2 = new FileOutputStream(test);
			OutputStreamWriter osw = new OutputStreamWriter(test2, "Cp1252");
			String temp = ErstellHTML(datei);
			osw.write(temp);
			osw.close();
		} catch (Exception e)
		{
		}
	}
```


----------



## tu-besucher (12. Jul 2004)

Vielen Dank Heiko,

String projekt = verzeichnis.substring(verzeichnis.lastIndexOf("\\") + 1);
  > ist "verzeichnis" eine Klasse, ein Objekt oder ein Parameter o.ä. ?

String temp = ErstellHTML(datei);
  > kannst Du mir bitte die Methode ErstellHTML() auch zuschicken

vielen Dank

Joe


----------



## Heiko (12. Jul 2004)

Also zum einen:

verzeichnis ist ein String.

Hier das Coding zu ErstellHTML:


```
/**
	 * Method ErstellHTML - erstellt den String, der dann in die neue Datei geschrieben wird.

	 * @param array - String Array

	 * @return String
	 */
	public static String ErstellHTML(String[] array)
	{
		String test;
		String rb;
		String datei;
		String mitte = "";
		int begrb = 0;
		int enderb = -1;
		int begdat = 0;
		//Durchläuft das Array und erstellt den String mitte
		for (int i = 0; i < array.length; i++)
		{
			if (array[i] != null)
			{
				test = array[i];
				enderb = test.indexOf(" ");
				begdat = test.indexOf(" ");
				rb = test.substring(0, enderb);
				datei = test.substring(begdat);
				rb.trim();
				datei.trim();
				mitte =
					mitte
						+ "<TR><TD WIDTH=20%>"
						+ rb
						+ "</TD><TD WIDTH=90%>"
						+ datei
						+ "</TD></TR>";
			}

			if (array[i] == null && i == 0)
			{
				mitte = "<TR><TD COLSPAN=2>Keine Werte enthalten</TD></TR>";
			}
		} //Erstellt das HTML Grundgerüst. String mitte wird eingefügt
		if(mitte.equals("")){mitte = "<TR><TD COLSPAN=2>Keine Werte enthalten</TD></TR>";}
		String rueck =
			"<HTML>"
				+ "<HEAD><TITLE>Auswertung</TITLE></HEAD>"
				+ "<BODY>[b]Liste der gefundenen Ressourceboundles[/b]

 "
				+ "

<TABLE WIDTH=100% HEIGTH=100% BORDER=1>"
				+ "<TR><TD WIDTH=20%> [b]Ressourceboundle[/b] </TD><TD WIDTH=90%>[b]Datei[/b]</TR>"
				+ mitte
				+ "</TABLE>"
				+ "</BODY></HTML>";
		return rueck;
	}
```


----------



## meez (12. Jul 2004)

Wie heissen denn deine Eingabefelder??


----------



## Heiko (12. Jul 2004)

meez hat gesagt.:
			
		

> Wie heissen denn deine Eingabefelder??



Meinst du mich? :?:


----------



## meez (12. Jul 2004)

@Heiko: Nein....


Ich hab hier mal ein Beispiel:
Ich habe mal angenommern, dass deine Eingabefelder im Formular so aufgebaut sind: 
Name: in-<zeile>-<spalte>, also Eingabefeld in-2-3 heisst zeile 2 und spalte 3


```
public void writeData(HttpServletRequest request) throws IOException {
   PrintWriter o = new PrintWriter(new FileOuputStream(request.getParameter(id)  + ".txt"));     
   String text;
   int spalte;
   text="";
   spalte=1;
   for (int zeile=1;request.getParameter("in-" + String.valueOf(zeile) + "-" + String.valueOf(spalte)) != null;zeile++) {         
      text+="\t";			
      for (String buffer;(buffer = request.getParameter("in-" + String.valueOf(zeile) + "-" + String.valueOf(spalte))) != null;spalte++;) 
         text+=buffer + ";";
      spalte=1;	
   }     
   o.println(text);
   o.flush();
   o.close();     
     
}
```


----------



## Heiko (12. Jul 2004)

meez hat gesagt.:
			
		

> @Heiko: Nein....



@meez OK


----------



## meez (12. Jul 2004)

Heiko hat gesagt.:
			
		

> meez hat gesagt.:
> 
> 
> 
> ...



@Heiko schon ok


----------



## Heiko (12. Jul 2004)

meez hat gesagt.:
			
		

> Heiko hat gesagt.:
> 
> 
> 
> ...



Hätte mich nämlich gewundert, wo du bei meinem Code Eingabefelder suchst, bzw. wozu, da ich die gar nicht brauche. ;-)
Werde mich hier jetzt erstmal ausklinken, meld mich wieder, wenn ich gedanklich was beisteuern kann.


----------



## tu-besucher (12. Jul 2004)

Danke meez / Heiko,

die (Eingabefelder) Tabelle soll so aussehen:

```
<%@ page import="java.util.*,java.io.*" %>
<html>
<head>
<title>Main</title>
</head>
<body>
....
<form action="E:\Diplomarbeit\dhtml.html" method="post" enctype="multipart/form-data">
    <table width="73%" height="362" border="0">
                  <tr> 
                    <td><p class="weissbox">[b]<font color="#000066"          
                                   size="4">Auftragsdaten</font>[/b]</p>
                      <table width="97%" border="1">
                        <tr> 
                          <td width="25%"><div align="center">[b]FA_Name[/b]</div></td>
                          <td width="22%"><div align="center">[b]Losgr&&e[/b]</div></td>
                          <td width="25%"><div align="center">[b]LieferTermin[/b]</div></td>
                          <td width="28%"><div align="center">[b]StartTermin[/b]</div></td>
                        </tr>
                        <tr> 
                          <td height="27"> <input name="Eingabe20" align="middle" type="text" value="z.B. FA1"
                                                                       size="16" maxlength="10"></td>
                          <td><input type="text" name="Eingabe21" size="14"></td>
                          
                    <td><input type="text" name="Eingabe22" size="16"></td>
                          <td><input type="text" name="Eingabe23" size="16"></td>
                        </tr>
                        <tr> 
                          <td><input type="text" name="Eingabe28561026" size="16"></td>
                          <td><input type="text" name="Eingabe2857" size="14"></td>
                          <td><input type="text" name="Eingabe28561022" size="16"></td>
                          <td><input type="text" name="Eingabe285662" size="16"></td>
                        </tr>
                        <tr> 
                          <td><input type="text" name="Eingabe28561027" size="16"></td>
                          <td><input type="text" name="Eingabe28532" size="14"></td>
                          <td><input type="text" name="Eingabe28561023" size="16"></td>
                          <td><input type="text" name="Eingabe285672" size="16"></td>
                        </tr>
                        <tr> 
                          <td><input type="text" name="Eingabe28561028" size="16"></td>
                          <td><input type="text" name="Eingabe28572" size="14"></td>
                          <td><input type="text" name="Eingabe28561024" size="16"></td>
                          <td><input type="text" name="Eingabe285682" size="16"></td>
                        </tr>
                        <tr> 
                          <td><input type="text" name="Eingabe28561029" size="16"></td>
                          <td><input type="text" name="Eingabe28573" size="14"></td>
                          <td><input type="text" name="Eingabe28561025" size="16"></td>
                          <td><input type="text" name="Eingabe285692" size="16"></td>
                        </tr>
                      </table></td>
                  </tr>
                </table></td>
.............
```

Weisst Du wie "Tabulator"-Zeichen in Textdatei aussieht ??

Danke

Joe


----------



## Heiko (12. Jul 2004)

Tut mir leid, da bin ich überfragt.
Aber es freut mich, wenn ich weiterhelfen konnte.


----------



## meez (12. Jul 2004)

Sehr sprechende Namen...

Hier (Musst es noch vervollständigen):


```
PrintWriter o = new PrintWriter(new FileOuputStream(request.getParameter(id)  + ".txt"));     
                 
      //Spalten
      o.print(request.getParameter("Eingabe20") + ";");
      o.print(request.getParameter("Eingabe21") + ";");
      o.print(request.getParameter("Eingabe22") + ";");
      o.print(request.getParameter("Eingabe23"));
      
      //Neue Zeile
      o.print("\t");
      
      //Spalten
      o.print(request.getParameter("Eingabe28561026") + ";");
      o.print(request.getParameter("Eingabe2857") + ";");
      o.print(request.getParameter("Eingabe28561022") + ";");
      o.print(request.getParameter("Eingabe285662"));
      
      //Neue Zeile
      o.print("\t");
      
      //Spalten
      ...
      
      
      o.flush();
      o.close();
```


----------



## tu-besucher (12. Jul 2004)

Hi Zusammen,

Vielen Dank und einen schönen Tag noch


----------



## Heiko (12. Jul 2004)

tu-besucher hat gesagt.:
			
		

> Hi Zusammen,
> 
> Vielen Dank und einen schönen Tag noch



Keine Ursache! Dir auch einen schönen Tag weiterhin.


----------

