2017-06-20 6 views
0

J'utilise eclipse et tomcat pour développer. Il semble que seuls les fichiers du dossier WebContent peuvent être consultés par l'utilisateur.
Et maintenant j'ai besoin de créer un fichier dynamiquement dans servlet, Mais comment puis-je obtenir le chemin réel du dossier WebContent?
J'ai essayé getServletContext().getRealPath(""), mais il retourne le chemin de l'espace de travail de l'éclipse, pas le chemin de mon projet, il est quelque chose comme ça D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\,
alors que je voudrais quelque chose comme ça D:\git\Monitor\WebContent
Tout le monde connaît la solution? ~ Merci beaucoupComment un servlet peut-il créer un fichier que l'utilisateur peut visiter directement

Répondre

0

J'ai trouvé une solution avec l'aide de mon professeur, d'une autre manière. Comme je ne peux pas obtenir le chemin réel de WebContent, je peux modifier le server.xml pour rendre un chemin local lisible pour le frontal. Ce fichier de configuration se trouve dans le dossier Servers. Le fond de server.xml est comme ceci.

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/> 
</Host> 

Et j'ajouté un nœud Context, il est, comme ce

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/> 
    <Context docBase="D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs" path="/Monitor/logs" reloadable="true" debug="" crossContext="true"></Context> 
</Host> 

De cette façon, je peux écrire des fichiers à D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs dans la servlet, et récupérer le fichier en utilisant url localhost:8080/Monitor/logs/fileName dans l'extrémité avant ~

0

Vous ne pouvez pas faire cela. Les applications Web (fichiers WAR) peuvent être déployées non extraites, c'est-à-dire sous la forme d'un fichier d'archive compressé.

La solution générale consiste à écrire une servlet, c'est-à-dire laisser l'utilisateur final télécharger le fichier généré. De cette façon, vous pouvez placer vos fichiers presque n'importe où sur votre serveur FS ...

+0

Mais les fichiers html dans le dossier 'Webcontent' peuvent être visités par url comme' http: // localhost: 8080/Monitor/html/index.html'. – disinuo

+0

J'ai donc pensé que le problème clé était d'obtenir le chemin réel de 'WebContent' pour que le servlet puisse y écrire un fichier. – disinuo

+0

'WebContent' d'Eclipse devient la racine de votre archive WAR. Vous ne pouvez pas écrire là-bas ... Configurez une propriété de configuration, qui contient un chemin sûr et inscriptible pour stocker vos fichiers. Cela dépend de l'environnement de votre serveur .... –