Dynamic Web Project -> file

PollerJava

Top Contributor
Hallo,

ich habe ein ganz normales Dynamic Web Project mit Eclipse erzeugt und möchte jetzt, dass ich gewisse Daten in einem File speichern kann. Dazu hab ich mir ein File (test.txt) unter "ProjektName/WebContent/test.txt" angelegt.
Von einem Servlet aus (im Package com.company.controller) möchte ich nun in die Datei test.txt schreiben.
Wie muss ich den Pfad vom servlet aus zu der Datei legen. ich habs schon versucht mit ../../../ProjektName/WebContent/test.txt (.. für den Package namen), aber das funktioniert nicht.
Oder weiß jemand eine bessere Idee?
Vielen Dank,
 
M

maki

Gast
Es gibt kein WebContent für die WebApp, nur für die IDE.

Abgesehen davon kann man nicht einfach so in Dateien schreiben die in der WebApp liegen, weil es u.U. gar keine Dateien gibt.

Suche doch mal ein bisschen im Forum hier, gab es sehr oft.
 

PollerJava

Top Contributor
OK, ich hab jetzt in der *.ear und dann in der *.war nachgesehen, es gibt wie erwartet den Ordner WebContent wirklich nicht,
nach was soll ich da suchen in diesem Forum, hab schon gesucht, bin aber nicht auf den gewünschten Sucherfolg gekommen,
vielen Dank,
 
M

maki

Gast
OK, Suchbegriffe dafür sind wirklich schwer zu finden.

Tatsache ist: Du sollst in WebApps gar nicht mit java.io.File arbeiten (oder Jars, EARs, usw.), und auf keinen Fall versuchen in Dateien zu schreiben die zur WebApp gehören.
Begründet ist das in Servlet Spek., es gibt keine Garantie dass es wirklich Dateien gibt, also die War entpackt wird, manche Server entpacken nach jedem Neustart alles neu -> Änderungen werden überschrieben

Lösungen gibt es dafür,die Frage lautet aber: Was hast du denn vor? bzw. Warum möchtest du denn in diese Datei schreiben?
 

PollerJava

Top Contributor
Ich bin gerade dabei einen "Prototypen" zu bauen, ich gebe über eine JSP- form etwas ein und dass soll dann in einer Datei gespeichert werden, Diese Datei wird dann vielleicht mit einer Datenbank ersetzt aber wer weiß,
Also ich brauche eine ganz einfache Möglichkeit, etwas zu speichern und da ist eben ein file das einfachste.
Ich habs jetzt so gemacht, dass ich den Pfad auf "C:/test.txt" gelegt habe, und das funktioniert interessanterweise, obwohl ich da acuh ein ungutes gefühl habe, da ich von einem Servlet (einer *.war Datei) auf das lokale Verzeichnis zugreife.

Wie könnt ich das am besten lösen.
lg
 

cr4ch

Mitglied
Also ich hatte so ein "ähnliches" Problem und zwar habe ich eine property Datei mit verschiedenen Einstellungen, auf die ich aber nur lesend zugreife.
jedenfalls liegt die Datei bei mir in /resources/config.properties

Um nun auf die Datei zugreifen zu können
Java:
getClass().getResource("/resources/config.properties").getFile();

Gruß
 

PollerJava

Top Contributor
Also von einer *.ear bzw. einer *.war aus auf eine externe Resource zuzugreifen ist erlaubt/empfehlenswert?
Gibts da nicht irgendwelche sicherheitsbestimmungen wie bei einem Applet (SandBox)?
 

PollerJava

Top Contributor
Nein, hat auch keiner behauptet.

Ähnlich, gehen aber weiter und sind nicht nur für die Sicherheit.

OK, aber es funktoniert, wenn man auf externe Resourcen zugreift was bei Applets schon wieder ein bisschen schwieriger ist mit dem signieren.
Ein Datenbankzugriff wäre ja auch ein externer Zugriff und das ist auch erlaubt und entspricht auch dem Standard (vom Persistance- Layer aus), meine Datei sollte nur als Datenbankersatz (einstweilen) dienen. Also ist meiner Meinung nach alles im grünen Bereich denn sonst gibt es ja keine Möglichkeit, außer Datenbanken oder externe Files.
Wie seht ihr das?
 
M

maki

Gast
Wie seht ihr das?
Vollkommen egal wie "wir" das sehen, es gibt einen Standard, solltest du auch mal lesen ;)

Dein Vergleich mit Applets passt nicht im geringsten, es geht um andere Dinge, zB. Clusterfähigkeit, Unterstützung von Transaktion, die Tatsache dass es gar keine Dateien geben muss(!).
Sicherheit hat damit nix zu tun.

Deine Lösung ist nur ein Workaround (diplomatisch ausgedrückt), aber gut genug für eine Demo/Prototypen, Produktiv solltest du es schon sauber lösen.
 

FArt

Top Contributor
OK, aber es funktoniert, wenn man auf externe Resourcen zugreift was bei Applets schon wieder ein bisschen schwieriger ist mit dem signieren.
Ein Datenbankzugriff wäre ja auch ein externer Zugriff und das ist auch erlaubt und entspricht auch dem Standard (vom Persistance- Layer aus), meine Datei sollte nur als Datenbankersatz (einstweilen) dienen. Also ist meiner Meinung nach alles im grünen Bereich denn sonst gibt es ja keine Möglichkeit, außer Datenbanken oder externe Files.
Wie seht ihr das?

Wie du siehst macht das ganze schon in einem Prototypen Probleme. Und was beweist dieser Prototyp, wenn er sich nicht (Spec)konform verhält?
Wenn im Produkt eine DB verwendet werden muss oder soll, dann mach das jetzt auch. Bediene dich einer kleinen DB wie z.B. die HSQL-DB, die du in-process laufen lassen kannst, die sich aber (als Datasource angemeldet) eben wie eine DB verhält, schnell aufgesetzt ist und eher deinem Endprodukt entsprchen wird.

Ein Prototyp, der nur die halbe Applikation abbildet, würde ich keinen Meter weit trauen.
 

PollerJava

Top Contributor
Naja, ganz so ist es nicht, Prototyp hab ich deshalb geschreiben da es ein versuch war mit einer externen XML- Datei, da diese aber jetzt so gut funktioniert, wird es auch bei der XML- Datei bleiben.
Jetzt ist nur die Frage, wie man das Professionell aufbaut -> da gibt es ja dann gar keinen möglichkeit, das so zu machen.
Maki hat ja geschrieben, dass ein XML- File im Dynamic Web Projekt nicht dem Standard entspricht und einen externe XML- Datei schon gar nicht.
Jetzt ist halt die Frage wie ich das machen soll, gibts eine Datenbank, in der ich mein XML- File speichern und leicht ändern kann?
 

FArt

Top Contributor
Naja, ganz so ist es nicht, Prototyp hab ich deshalb geschreiben da es ein versuch war mit einer externen XML- Datei, da diese aber jetzt so gut funktioniert, wird es auch bei der XML- Datei bleiben.
Ja, das "Ergebnis" war zu erwarten.

Jetzt ist nur die Frage, wie man das Professionell aufbaut
*G*
Das steht bereits in den Antworten weiter oben.
Ich mag Puritaner sein in dieser Hinsicht, aber auch als pragmatische Lösung rate ich von Zugriffen auf das Filesystem aus einer Enterprise- oder Webapplikation ab... aus Erfahrung und aus gutem Grund.
 

vsk

Aktives Mitglied
Wie lesen ich denn jetzt nun eine KonfigurationsDatei ein?

Besser gefragt, wie lege ich den Pfad fest, damit es sowohl unter Linux wie auch Win Umgebung funktioniert? da bleibt mir doch nur der Web-ordner oder? Aber dann wird es mitkompiliert und ist witzlos...:shock:
 

vsk

Aktives Mitglied
Ja sehr gern, nutze ich die web.xml :)

Aber ein absoluter Pfad, klappt nur bei mir auf der Kiste...
Muss es also ein relativer sein... aber wohin komme ich denn wenn ich "\" aus dem Verzeichnis der web.xml "rausspringe" ? Soll ja unter Linux wie auch Windows funktionieren...

Kurz: was ich nicht raffe ist, wohin lege ich meine Konfig-Dateien (Ordner) und wie trage muss der Value für die web.xml dafür heissen... Das ist mein probläääm
 

vsk

Aktives Mitglied
ich werd nicht schlau wie ich in der web.xml einen Dateipfad hinterlegen soll
[XML]<servlet-mapping>
<servlet-name>myconfig</servlet-name>
<url-pattern>/conf/myconfig.xml</url-pattern>
</servlet-mapping>[/XML]

Java:
<%= config.getServletContext() %>
funktioniert nicht -> The requested resource () is not available.
 
M

maki

Gast
vsk, wenn man WebApps entwickeln will sollte man sich auch mit der Materie auseinandersetzen.
Da sehe ich bei dir ehrlich gesagt noch riesige defizite, zeigt sich an den fragen die du stellt und am Code den du hier reinstellt.
Und nein, das geht nicht per learing-by-doing.

[xml]<servlet-mapping>
<servlet-name>myconfig</servlet-name>
<url-pattern>/conf/myconfig.xml</url-pattern>
</servlet-mapping>[/xml]
Da ist kein "Dateifad" den du hier festlegst, sondern ein mapping zwischen Servlets und URL.
Du willst Servlet Parameter.

[xml]<%= config.getServletContext() %>[/xml]
Der Contextpath hat rein gar nicht mit Servletmappings oder Dateipfaden zu tun.

Tue dir slber einen großen gefallen und fange an zu lesen, die Servlet Spek wäre imho ein guter Startpunkt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Eclipse: JPA Project in Dynamic Webproject nutzen Allgemeines EE 4
S Dynamic Web Project mit Eclipse - Vorgehensweise? Allgemeines EE 2
M Zeitgesteuertes Ereignis in einer dynamic web module Anwendung (eclipse) Allgemeines EE 3
N Dynamic Web Projekt und SVN Allgemeines EE 25
P Dynamic links in jsf Allgemeines EE 3
N Dynamic Web Module Version ändern? Allgemeines EE 2
C Applet in "Dynamic Web Projekt" - Kann Klasse nich Allgemeines EE 2
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S Eclipse JPA Project Allgemeines EE 8
G Web Project und libs Allgemeines EE 4
P CXF Project auf Tomcat laufen lassen - wie? Allgemeines EE 35
B Wildlfy .war - File in produktiven System deployen (Upgrade der Software) Allgemeines EE 5
E Audio/Video File Streamen Allgemeines EE 1
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
OnDemand Deploy war File wie aufrufen? Allgemeines EE 10
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand War File erstellen Allgemeines EE 1
T Probleme mit File renameTo bzw. File delete @@ Allgemeines EE 3
W properties File in WEB-INF Allgemeines EE 5
H fehler beim deployen von ear file Allgemeines EE 2
E Properties-File in Jboss-Conf Verzeichnis ansprechen Allgemeines EE 2
A File Donwlad über jsp Allgemeines EE 6
G File-Upload Allgemeines EE 3
V File Permissions Allgemeines EE 3
J Auslesen von <input type="file"> Allgemeines EE 2
M Servlets | work - Klassen nicht im WAR File Allgemeines EE 5
P jar-File aus war-File beim Deploy automatisch entpacken Allgemeines EE 2
H File Upload per Formular - prinzipielle Vorgehensweise? Allgemeines EE 2
M war file export Allgemeines EE 2
B FileInputStream(sPath); file wird nicht gefunden Allgemeines EE 5
D <input type="file"> Problem Allgemeines EE 6
D JSP include file Direktive Allgemeines EE 2
U File upload, File download und verzeichnis Struktur Allgemeines EE 2
M Struts File Upload problem Allgemeines EE 6
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
H Die JBossMQ im JBoss auf File-Persistence stellen? Allgemeines EE 3
M JSP und File Allgemeines EE 5
S Daten in ein Excel file exportieren Allgemeines EE 3
G JSP: kann nicht in File schreiben Allgemeines EE 2
K JPG file in Java Klasse speichern Allgemeines EE 13
B Nochmal Servlet und File, diesmal download. Allgemeines EE 3
D welcome-file *.do Allgemeines EE 4
T Servlet-Mapping und Welcome-File-List unter Websphere? Allgemeines EE 2
P Probleme mit File renameTo bzw. File delete Allgemeines EE 3
A File Download mit Umlauten in Tomcat/Struts/Suse8 Allgemeines EE 1

Ähnliche Java Themen

Neue Themen


Oben