Charger un fichier statique, au Printemps de Contrôleur
Je suis assez nouveau pour le Printemps, donc toutes mes excuses si je ne vois pas la réponse la plus évidente ici.
J'ai mis en place de petites projet de démonstration avec un contrôleur Spring MVC et déployé à App Engine. 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 suis probablement la recherche de quelque chose de mal. J'ai essayé de le ci-dessous, mais il ne fonctionne pas:
@Controller
@RequestMapping("/myController")
public class MyController {
@RequestMapping(value = "/test", method = RequestMethod.GET)
public @ResponseBody String myTest() {
FileReader fileReader = null;
BufferedReader bufferedReader = null;
String content = "";
try {
fileReader = new FileReader("file:/WEB-INF/content/somecontent.txt");
bufferedReader = new BufferedReader(fileReader);
content = bufferedReader.readLine();
bufferedReader.close();
}
catch (Exception ignored) {
//ignore
}
return content;
}
}
Tout pousser dans la bonne direction sera fortement appréciée 🙂
L'enfer... et bien sûr, une seconde après avoir posé la question ici, j'ai eu de travail... Le chemin correct dans le FileReader devrait être "WEB-INF/content/somecontent.txt" je laisse la question ouverte pour l'instant, parce que je sens, ce n'est pas la façon la plus élégante façon de le faire.
OriginalL'auteur StefanS | 2011-02-28
Vous devez vous connecter pour publier un commentaire.
La mention "fichier:" et "classpath:" n'est-ce pas droit à FileReader.
Je vous suggère de créer un FileSystemResource
puis à utiliser le getFile() ou getInputStream() pour lire le fichier.
Ceci est très utile dans une application web, parce que vous pouvez utiliser un chemin relatif.
Comment cela peut-il être fait avec BufferedWriter?
OriginalL'auteur javanna
Des conteneurs de Servlet en général, et de GAE en particulier, ne vous laissera pas utiliser le Fichier API à partir de l'intérieur du conteneur de servlet comme ça.
Au lieu de cela, autowire votre contrôleur avec le
ServletContext
, et extraction de la ressource. Aussi, votre gestion des exceptions n'est pas très grande, vous ne devriez pas ignorer les exceptions comme ça, ils sont là pour une raison.Quelque chose comme devrait être OK:
Alternativement, si vous utilisez le Printemps 3.x, c'est peut être même encore plus simple:
Voir les docs pour que cela ne, mais il peut signifier que vous pouvez éviter toute code.
Est-il encore juridiques et des meilleures pratiques, si je le fais dans la
Service
couche? 😀OriginalL'auteur skaffman
Êtes-vous sûr que vous avez besoin de conversion introduit par la lecture d'un fichier de contenu via
Reader
et en le retournant commeString
?Si non (c'est à dire si vous voulez servir un fichier), vous pouvez utiliser le transfert de la demande:
ou même (si vous avez
InternalViewResolver
):Si oui, notez que vous n'avez pas à spécifier le codage lors de la lecture de fichier, de sorte que le système de codage par défaut est utilisé et le comportement de votre application est dépendant du système.
OriginalL'auteur axtavt
Puisque c'est un Printemps de l'application, vous pouvez compter sur les classes pour aider avec ceci. En particulier, org.springframework.web.contexte.de soutien.ServletContextResource devraient se révéler très utile:
ServletContextResource
ne vous apportent aucun avantage ici, cependant, vous pourriez aussi bien obtenir à partir de laServletContext
directement.OriginalL'auteur Brent Worden