11
votes

Charger un fichier statique dans un contrôleur de ressort

Je suis assez nouveau au printemps, alors excuses si je ne vois pas la réponse évidente ici.

I Configurez un petit projet de démonstration avec un contrôleur MVC à ressort et le déployé sur le moteur App. Dans mon contrôleur, je voudrais lire le contenu d'un fichier statique dans une chaîne. Quelle est la meilleure façon de le faire?

J'ai googlé un peu mais je cherche probablement la mauvaise chose. J'ai essayé ci-dessous, mais cela ne fonctionne pas: xxx

Toute poussée dans la bonne direction sera très appréciée: -)


1 commentaires

Enfer ... Assez sûr, une seconde après avoir posé la question ici, je l'ai eu du travail ... le chemin correct dans le filereader doit être "Web-Inf / Content / Somecontent.txt" Je quitte la question ouverte pour le moment, parce que je Sentez-vous, ce n'est pas le moyen le plus élégant comment faire cela.


4 Réponses :


9
votes

La notation "Fichier:" Et "ClassPath:" N'est pas correct avec FileReader. Je vous suggère de créer un SystemResource

FileSystemResource resource = new FileSystemResource("/WEB-INF/content/somecontent.txt");


0 commentaires

15
votes

Les conteneurs de servlet en général et GAE en particulier vous permettent d'utiliser l'API de fichier de l'intérieur du récipient de servlet comme celui-ci.

AutoWIRE Votre contrôleur avec le servlet servleContext code>, et chercher la ressource à partir de cela. En outre, votre manipulation des exceptions n'est pas géniale, vous ne devriez pas ignorer les exceptions comme ça, ils sont là pour une raison pour une raison. P>

Quelque chose comme devrait être OK: P>

<mvc:view-controller path="/test" view-name="/WEB-INF/content/somecontent.txt"/>


2 commentaires

Brillant, ça marche. Merci! En ce qui concerne la manipulation des exceptions: 100% d'accord, je viens d'essayer de le garder court parce que ce n'était pas essentiel ;-)


Est-ce toujours légal et la meilleure pratique si je le fais dans le service ? :RÉ



1
votes

Comme il s'agit d'une application de printemps, vous pouvez compter sur ses cours pour aider à cela. En particulier, org.springframework.web.context.support.servletcontextresource devrait s'avérer utile: xxx


1 commentaires

servleContexTreXource ne vous apporte aucun avantage ici, cependant; Vous pouvez également simplement simplement le faire du servleContext directement.



6
votes

Êtes-vous sûr d'avoir besoin de la conversion de codage introduit en lisant un contenu de fichier via lecteur code> et de le renvoyer comme chaîne code>?

Si non (c'est-à-dire si vous voulez servir Un fichier tel quel), vous pouvez utiliser le renvoi de demande: p> xxx pré>

ou même (si vous avez internalviewresolver code>): p>

@RequestMapping(value = "/test", method = RequestMethod.GET)
public String myTest() {
    return "forward:/WEB-INF/content/somecontent.txt";
}


0 commentaires