# Verzeichnis auf Server auslesen



## HarryG32 (23. Feb 2012)

Hallo,

ich habe ein Applet, das eine XML-Datei von einem Server laden soll. Dabei sollen alle XML-Dateien eines bestimmten Verzeichnisses ausgelesen und in einer Auswahlliste angezeigt werden.

Lokal habe ich das mit einem FileLister gemacht, das ging ganz einfach. Leider funktioniert der FileLister nicht mit URL-Adressen und ich weiss nicht wie ich das anders machen kann.

Bisherige Suche im Internet verlief ohne Ergebnisse, bitte um Hilfe!


----------



## irgendjemand (23. Feb 2012)

hmm ... da man aus sicherheits gründen den server immer so konfigurieren sollte das er keine ordner-ansichten preisgibt *in der regel durch ne HTTP 403* wird das schwer ...
bau dir auf dem server doch einfach ein kleines php-script welches dir alle XML-files z.b. als tabelle darstellt ... diese parsed du dann mit java und kannst dir so etwas zusammen bauen


btw : das File-objekte und -methoden nicht mit URLs funktionieren sollte eigentlich anhand des verwendeten protokolls *HTTP* klar sein ...


----------



## HarryG32 (23. Feb 2012)

Ich habe mir ein php-Skript gebaut bzw. abgeschaut, da ich noch nie was mit php gemacht habe. Das Skript funktioniert supa, hab ma ned gedacht, dass das so einfach geht.  Leider habe ich jetzt das Problem, das ich nicht weiss wie ich die Daten weiterverarbeitete bzw. ob das wirklich der Weg ist den ich gehen will, weil ich ja eigentlich nur Java verwenden wollte (sollte).

Was mach ich jetzt mit meinem Servlet?? Kann ich das trotzdem für's übertragen (per Stream) von den den Daten des geladenen XML-File verwenden?? Ich brauche ein Feedback welches File geladen werden soll, könnte das so gehen??

Applet verbindet sich mit Servlet und übergibt Parameter "Laden"-> Servlet ruft php-Skript auf ->
Php liest das Verzeichnis aus und erzeugt eine HTML-Seite-> User wählt ein File aus Seite aus und drückt "Laden" -> php übergibt den Filenamen an das Servlet -> Servlet gibt den Datenstrom an das Applet zurück -> Applet erzeugt ein XML-File daraus.

Ja das mit dem FileLister ist klar, hab das in der Hoffnung erwähnt, dass Java etwas vergleichbares für URLs bereitsstellt...


----------



## irgendjemand (23. Feb 2012)

gut ... solche infos wie "mit applet auf servlet zu greifen" wären im ersten post wichtig gewesen ...

dann brauchst du auch nicht den umweg über php machen sondern kannst das auslesen des DIR direkt im servlet machen ...

ansonsten : WIE sollte deiner meinung nach denn sowas aussehen das von wild-fremden servern die vermutlich gar nicht dafür konfiguriert sind irgendwelche dateisystemstrukturen geladen werden können ...
wenn der server mit ner meldung antwortet das es einem user nicht erlaubt ist dies zu sehen *was wirklich immer der fall sein sollte* dann kann java da auch nich viel machen

*manche leute haben immer träume*


----------



## HarryG32 (24. Feb 2012)

Ja, mein Traum ist, dass dieses Programm endlich so läuft wie ich es gern hätte bzw. es den Anforderungen gerecht wird.

@irgendjemand: ich verstehe nicht, warum du von "wildfremden Servern" sprichst. Ich habe mir eine Domain zugelegt, für die ich bezahle und dort werd ich wohl den Inhalt eines Verzeichnisses auslesen dürfen? Oder nicht? Leider fehlt es mir in diesem Bereich an Erfahrung, deshalb habe ich auch dieses Projekt gewählt. Glaubst du, dass ich mit dem Servlet Probleme bekomme wegen der Zugriffsrechte (Lese-& Schreibrechte) ??

Das Applet läuft auf dem Client und beim Laden sollten eben alle Dateien (XML-Files) des "Save-Ordners" auf dem Server, wo das Applet liegt, ausgegeben werden. Das mach ich jetzt doch mit einem Servlet, leider muss ich mir halt was anderes als einen "Filelister" überlegen, wahrscheinlich werde ich die Filenamen in einem String speichern, mit Separator-Zeichen und diesen auf Applet-Seite wieder zerlegen und grafisch aufbereitet ausgeben.


----------



## irgendjemand (24. Feb 2012)

richtig ... du bezahlst eine DOMAIN ... vermutlich mit ein bissl webspace und ner datenbank ...
das macht dich aber weder zum eigentümer noch zum administrator des servers ... ergo kannst du die auf diesem server festgelegten sicherheitsrichtlinien nicht ändern ... und darunter fällt nun mal auch das du den server nicht global zur anzeige von verzeichnissen freigeben kannst ...

desshalb würde auch eine lib nicht funktionieren ... weil diese lib keinen einfluss auf den server hätte ... auf dem du ja noch nicht mal rechte dazu hast das was du brauchst überhaupt einzustellen

dir bleibt also nur übrig mit server-sprachen wie eben PHP , JSP , ASP das selbst in die hand zu nehmen ... hat auch wiederum den vorteil das du dir die ausgabe so zusammenbauen kannst das du diese in deinem applet schnell laden kannst ...


btw : wenn ich das schon lese : "save-order mit dateien" ... AUA

gerade dafür hat man webservices erfunden ...
das sind scripte in einer server-sprache die daten vom client entgegen nehmen und auch wieder an diesen senden ... und sich für den client nicht erkennbar um die daten-organisation kümmern ...

ergo : wenn du versuchst in deinem client diese organisation einzubauen hast du hier schon den ersten großen denkfehler ... und eine verdammt große sicherheitslücke


----------



## HarryG32 (24. Feb 2012)

Ok, dieser Weitblick fehlt mir einfach noch....

Lt. Wikipedia stellen Servlets Pendants zu PHP, JSP,.. dar, wenn es um das Erzeugen dynamischer Webinhalte geht. Leider sagt das natürlich nix über die Zugriffsrechte aus...

Ich habe eben ein Applet und da bietet sich das Servlet an (als serverseitiges Applet). Warum das mit Servlets nicht gehen soll, aber mit z.B.: PHP doch, habe ich leider bis jetzt nicht nicht ganz begriffen...aber egal, wenn's so ist, dann ist es so.

Ich habe heute meinem Betreuer eine Email geschrieben und ihm die von dem Sachverhalt berichtet, mal schauen...

Leider weiss ich immer noch nicht wie ich es am besten realisieren soll. JSP wäre eine Option, ist eine Java-Technologie und gemacht habe ich auch schonmal was damit, aber das ist schon eine Weile her.

Danke für deine Hilfe und die Denkanstösse.



> ... hat auch wiederum den vorteil das du dir die ausgabe so zusammenbauen kannst das du diese in deinem applet schnell laden kannst ...



Da gebe ich dir vollkommen recht, das ist ein großer Vorteil!


----------



## HarryG32 (24. Feb 2012)

Kann ich es so machen???

Das Applet kommuniziert mit dem Servlet und das Servlet erledigt das Lesen und Speichern mithilfe von Skripts. 

Beim Laden ruft das Servlet ein "Lesen-Skript" auf, das eine HTML-Seite mit Auswahlliste erzeugt. Beim Bestätigen wird aus der HTML-Seite heraus ein zweites Skript geladen, das das gewählte File ausliest und den Inhalt an das Servlet übergibt. Das Servlet schickt den Content an das Applet per Stream zurück. 

Beim Schreiben wird das File vom Applet an das Servlet geschickt, das Schreiben im Webspace übernimmt wieder ein Skript. Das Servlet schickt die Bestätigung an das Applet zurück?


----------



## irgendjemand (24. Feb 2012)

ja ... so umständlich kannst du es dir machen ... nur verstehe ich immer noch nicht earum du den umweg über irgendwelche scripte machen willst .... das servlet kann das genau so gut ...

auch was du hier von irgendwelchen re hten faselst will mir nich klar werden ...
im groben hast du rechte zum lesen und schreiben innerhalb deines space *also alles wo du mit deinem FTP account hinkommst* ...
und innerhalb dieser struktur kannst du mit einem jspservlet auch java.io.File verwenden um dir deinen output zu erzeugen ...

du machst dir das alles gerade etwas zu umständlich ...


----------



## HarryG32 (24. Feb 2012)

War wohl mein Fehler, hab am Anfang nicht gleicht erwähnt, dass ich eine Applet<->Servlet-Kommunikation machen will.
Dachte danach, dass ich noch unbedingt ein Skript zum Datenschaufeln brauche . Habe Probleme mit den Pfaden, jetzt werd 
erstmal ein TestServlet erzeugen und die Sache von Grund auf angehen.

Ein JSPServlet kenn ich nicht, hoffe ein Normales tut's auch...


----------



## ...ButAlive (25. Feb 2012)

Ein JSPServlet gibt es auch nicht, da hat irgendjemand mal wieder Quatsch geschrieben.

Du brauchst 2 Servlets, das erste Servlet gibt eine Liste der Namen der möglichen XML-Dateien zurück. Um die Liste zu finden kannst du  deinen FileLister verwenden. Die Liste wird dann an das Applet geschickt. Als Format kannst du XML verwenden, das könnte dann so aussehen:

[XML]
<xmlfiels>
   <xmlfile>file1.xml</xmlfile>
    <xmlfile>file2.xml</xmlfle>
</xmlfiles>
[/XML]

Auch gängig wäre Json, damit würdest du weniger Daten schicken müssen. Das sieht dann so aus:


```
{xmlfiles:[file1.xml, file2.xml]}
```

Falls du dich dafür entscheidest wäre gson einen Blick wert.

Dein Applet muss nun die Ausgabe des Servlets auswerten und anzeigen. Wenn nun eine Datei gewählt wurde kommt das 2. Servlet ins Spiel. Dieses bekommt als Parameter den Dateinamen geschickt. Es ist egal ob per GET oder POST, wobei ich eher GET nehmen würde. Daraufhin liest es die Datei vom Server und schickt sie zurück zu deinem Applet.  

Das ist nur eine Möglichkeit so etwas zu lösen. Der Vorschlag geht in Richtung RESTful-Service, dafür gibt es auch Frameworks die dir die Arbeit ein bisschen abnehmen. Weitere Möglichkeiten wären Binärprotokolle wie RMI oder Hessian, oder schwere Geschütze wie SOAP. Ich denke aber, dass das was ich dir vorschlage vollkommend in Ordnung für deinen Anwendungsfall ist.


----------



## HarryG32 (25. Feb 2012)

> Ein JSPServlet gibt es auch nicht, da hat irgendjemand mal wieder Quatsch geschrieben.


Da wollte mich wohl irgendjemand verwirren. Das hat er auch geschafft....

Danke, endlich mal eine Antwort mit der ich was anfangen kann, i'm back on track. JSON kenn ich, XML verwende ich, ein Servlet hab ich, zweites dazu...auf geht's!


----------



## irgendjemand (27. Feb 2012)

laut einem sehr guten JSP buch was ich hier habe ist SERVLET eine spezielle form eines JSP-dokuments ...
der unterschied ist nur das JSP dierekt verwendet mehr ähnlichkeit mit PHP hat ... nämlich die dynamische erzeugung von HTML oder was auch immer ...
die spezielle unter-art von JSP ... die sog. SERVLETS gleichen mehr einer richtigen anwendung ... laufen aber in wirklichkeit auf einem java-application-server ...
der vorteil hier ist das man z.b. dierekt über die streams mit dem browser kommunizieren kann ...

ergo : laut meinem buch sind SERVLETS nichts weiter als speziell programmierte JSP-seiten ... und damit eine unter-art davon *wird im übrigen auf wikipedia ähnlich erklärt* ... ob man das ganze nun nur servlet ... oder spezifizierter JSP-servlet nennt ... das ist nun egal ... aber die behaupt das es JSP-servlets nicht geben würde ist falsch ...

ich habe bewusst die bezeichnung JSP-servlet gewählt da es auch z.b. mit ASP und IIS als app-server möglich ist etwas ähnliches zu bauen was dann von M$ ebenfalls servlet genannt wird ... und gerade hier ist dann die bezeichnung offiziell ASP-Servlet ... warum also nicht der verwirrung verbeugen und JSP-Servlet sagen ? ...

manchmal pwnt ihr euch alle i-wie so ein bisschen selbst


----------



## ...ButAlive (27. Feb 2012)

JavaServer Pages werden von einer ServletEngine wie Tomcat in ein Servlet compiliert. Das heißt aus so einer JSP-Seite:


```
<%= "Hallo Welt" %>
```

macht der Compiler, in etwa so ein Servlet:


```
public class HelloServlet extends HttpServlet {
  
   public void doGet (HttpServletRequest req,
                                   HttpServletResponse res)
       throws ServletException, IOException
    {
       PrintWriter out = res.getWriter();

       out.println("Hallo Welt");
       out.close();
  }
}
```

Das heißt für mich, aus einer JSP *wird* ein Servlet erzeugt, aber nicht dass eine JSP ein Servlet *ist*. Bei Resultat könnte man von einem JSPServlet sprechen, es gibt auch eine Basisklasse in der Hierarchie vom Tomcat die so heißt, von der leiten die erzeugten Servlets (bei Tomcat) auch ab. 

Wenn man dem TO sagt er soll ein JSPServlet schreiben, heißt das dann er soll das Kompilat einer JSP auf einem Tomcat schreiben. Das halte ich auch für mindestens verwirrend.



irgendjemand hat gesagt.:


> ich habe bewusst die bezeichnung JSP-servlet gewählt da es auch z.b. mit ASP und IIS als app-server möglich ist etwas ähnliches zu bauen was dann von M$ ebenfalls servlet genannt wird ... und gerade hier ist dann die bezeichnung offiziell ASP-Servlet ... warum also nicht der verwirrung verbeugen und JSP-Servlet sagen ? ...



Wir sind hier im Forum nun mal in der Java-Welt, da ist es verwirrend in .NET Sprache zu sprechen.


----------

