Como iniciante no J2EE, recentemente comecei a desenvolver meu próprio projeto usando o Core of J2EE: Servlets e Jsps.
Não pude avaliar se minha estrutura de pastas do projeto está correta ou não. Aqui está minha estrutura de pastas do projeto.
Antes de fazer uma pergunta, admito que não poderia responder ou justificar se alguém me perguntar por que esse tipo de estrutura de pastas. A pergunta: é um bom sinal colocar meus jsps fora do web-inf. Se não, por que é assim? Se sim, por quê?
Existe alguma convenção de estrutura de pastas padrão para um aplicativo da Web J2EE, eu sei que o maven trouxe alguns padrões, mas ainda assim, podemos personalizar conforme os requisitos que eu acredito.
Eu pesquisei um pouco e encontrei as duas referências 1 2
onde as respostas não estão na mesma página, das quais não pude tirar nenhuma conclusão.
Quais são os pontos a serem considerados durante o layout da estrutura de pastas para um aplicativo da Web J2EE, onde os Jsps e o conteúdo estático devem entrar e por quê?
Respostas:
A estrutura padrão para um arquivo WAR é:
O Maven gera isso para você usando seu src / main / java, recursos, webapp e suas dependências (colocando-as em / lib) no maven-webapp-plugin , mas isso é implementação. O importante é perceber que tudo o que você coloca no WEB-INF não é acessível externamente , enquanto tudo no diretório raiz do WAR é público.
Geralmente, você não deseja colocar muito na raiz, pois deseja que seu aplicativo manipule todo o acesso usando os servlets e filtros que você define no web.xml. É comum ver um index.html (ou .jsp) na raiz que redireciona para um servlet, por exemplo, uma ação Struts .
Implementações típicas do MVC, como Stripes ou Struts, recomendam que o usuário não acesse diretamente as JSPs, preferindo que as JSPs sejam apenas de visualização. Eles recomendam a criação de controladores que encaminham para JSPs após o processamento da solicitação, e as JSPs apenas renderizam o resultado. Por exemplo, enviar um formulário para
/login
executará uma ação que processa a solicitação de login, cria a sessão do usuário e encaminha o usuário para a visualização de logon da JSP da página inicial.fonte
A resposta usual para "qual é o caminho certo?" ou "este é o caminho certo?" é ... depende .
Tudo o que posso fazer é contar os prós e os contras de idéias específicas. O que se segue é 100% da minha opinião. Não conheço nenhum requisito ou regra específica. Tenho certeza que alguém vai discordar de mim.
JSP's
Vamos trabalhar para colocar JSPs no WEB-INF ou não.
Prós de colocar JSP's no WEB-INF:
Contras de colocar JSPs no WEB-INF:
Arquivos estáticos
Em termos de arquivos puramente estáticos, como HTML, imagem, folha de estilo, javascript, etc., coloque-os na raiz da web (my_app no seu caso), mas NOT / WEB-INF (porque não é acessível).
Layout geral
Quanto ao layout geral do diretório, isso depende um pouco do seu processo de criação. Eu gosto de armazenar tudo em "src" ou "source" porque deixa claro quais arquivos são gerados pela construção e quais são arquivos de origem puros.
main
permite separar o código de teste, como as classes junit, do código-fonte principal, o que também é bom. Mas se você não tiver nenhum teste de unidade (oh não!), É uma distinção sem sentido.Por outro lado, se você não manipular a raiz da web durante a compilação (como se fosse todos os arquivos JSP e estáticos), talvez você a mantenha no nível superior, como
/webroot
ou/deploy
copie os arquivos conforme necessário, como arquivos .class ou .jar. É um hábito de seres humanos (especialmente desenvolvedores) se organizarem demais. Um bom sinal de excesso de organização é ter muitas pastas com apenas uma única subpasta.O que você mostrou
Você indicou que está seguindo uma convenção definida pelo maven, portanto, se você já estiver usando o maven, fique com esse layout. Não há absolutamente nada de errado com o layout que você descreveu.
fonte
Bem, seu src / main / webapp certamente me lembra um projeto de maven. Qual é bom.
Para o my_app / jsps, não tenho certeza. Os desenvolvedores geralmente deixam seus jsp na pasta webapp ou, se você quiser fazer um pouco de mapeamento de URL, em um diretório webapp / jsp.
!Atenção! : Você nunca deve colocar um arquivo jsp em web-inf. Seu WEB-INF deve conter apenas arquivos xml para configurar seu site. Lembre-se, seu jsp é uma página da Web ou parte de uma página da Web.
Você pode usar o nome de pastas como modelo, parcial ... o que achar melhor para você. Deve ser fácil encontrar um estranho. Basta separar diferentes tipos de conteúdo, como páginas completas, modelos, visualizações parciais ...
fonte
Eu concordo com o Brice . Também sou iniciante no J2EE, mas acho que é melhor trabalhar fácil e claramente no começo.
A pasta raiz é WEBAPP, e você deve fazer com que sua estrutura da web pense que a maioria das páginas será localizada lá. Caso contrário, quando as páginas se comunicarem, provavelmente você não poderá gerenciar os relacionamentos de arquivos sem erros.
fonte
Na verdade, o aplicativo WAR pode ser construído sem
WEB-INF/web.xml
. É possível criar aplicativo WAR apenas com classes Java dentro.Fonte: Elementos do Descritor de Implantação web.xml
Hoje em dia é possível criar WAR do que parece com JAR com
.war
extensões :)Respondendo à sua pergunta, a estrutura WAR depende de seus requisitos.
http://en.wikipedia.org/wiki/WAR_(Sun_file_format)
fonte