La réponse habituelle à "quelle est la bonne façon?" ou "est-ce la bonne façon?" est ..... cela dépend .
Tout ce que je peux faire, c'est vous dire les avantages et les inconvénients d'idées spécifiques. Ce qui suit est à 100% mon avis. Je ne connais pas d'exigences ou de règles spécifiques. Je suis sûr que quelqu'un sera en désaccord avec moi.
JSP
Essayons de mettre ou non les JSP dans WEB-INF.
Avantages de mettre des JSP dans WEB-INF:
- Vous contrôlez la façon dont les JSP sont exécutés. Si vous voulez qu'un JSP soit paramétré et réutilisable (ce qui est vraiment difficile avec un JSP de toute façon), vous pouvez les mettre dans WEB-INF et utiliser un servlet ou un contrôleur d'action Struts ou un autre contrôleur frontal pour effectuer le pré-traitement puis passer le contrôle à la JSP, en passant dans le bon environnement (comme les attributs de requête, les contrôles de sécurité, l'assainissement des paramètres, etc.)
- Vous pouvez par programme ou même au niveau d'un pare-feu ou d'un niveau IDS bloquer les requêtes HTTP vers * .jsp pour réduire la probabilité que quelqu'un télécharge un JSP vers la racine Web et puisse ensuite exécuter du code en tant que serveur Web. Ils devraient écraser un JSP existant. Pas un énorme gain de sécurité, mais cela rend le compromis un peu plus difficile.
- Applique de bonnes habitudes, comme MVC, contrôleur frontal, filtres de servlet, injection de dépendances, etc. par opposition à un grand JSP monstrueux qui fait tout le travail lui-même et est difficile à lire / à entretenir.
Inconvénients de mettre des JSP dans WEB-INF:
- Vous ne pouvez pas accéder directement à la page, même s'il s'agit d'une simple page autonome qui ne nécessite aucun traitement initial. En effet, les fichiers sous / WEB-INF ne sont pas gérables par un conteneur de servlet.
Fichiers statiques
En termes de fichiers purement statiques comme HTML, image, feuille de style, javascript, etc. mettez ceux-ci sous la racine web (my_app dans votre cas), mais PAS / WEB-INF (car il n'est pas accessible).
Disposition générale
Quant à la disposition générale du répertoire, elle dépend quelque peu de votre processus de construction. J'aime tout stocker sous "src" ou "source" car cela indique clairement quels fichiers sont générés par la construction et quels sont les fichiers source purs. main
vous permet de séparer le code de test comme les classes junit de votre code source principal, ce qui est bien aussi. Mais si vous n'avez pas de tests unitaires (oh non!), Alors c'est une distinction dénuée de sens.
D'un autre côté, si vous ne manipulez pas du tout la racine Web pendant la construction (comme s'il s'agit uniquement de fichiers JSP et statiques), alors peut-être que vous la gardez au niveau supérieur, comme /webroot
ou /deploy
et copiez des fichiers si nécessaire, tels que Fichiers .class ou .jar. C'est une habitude des êtres humains (en particulier des développeurs) de trop organiser. Un bon signe de surorganisation est d'avoir de nombreux dossiers avec un seul sous-dossier.
Ce que vous avez montré
Vous avez indiqué que vous suiviez une convention établie par maven, donc si vous utilisez déjà maven, respectez simplement cette disposition. Il n'y a absolument rien de mal avec la disposition que vous avez décrite.