Boa noite galera, tudo bom?
Estou com um “problema” no meu projeto:
Terei vários objetos no meu projeto, por enquanto apenas 2: Localidade e Evento.
Esses objetos poderão ser cadastrados e buscados pelo Usuário.
Para fazer essas requisições de cadastrar e buscar estou usando servlets. O problema é que não sei como centralizar vários servlets então estou criando um para cada tipo de requisição (cadastraLocalidade, cadastraEvento, buscaLocalidade…). Me parece (me corrijam se eu estiver errado) que essa maneira não é a mais correta de se fazer por separar muito o código e parece haver um jeito de centralizar todas as requisições em um único servlet.
Li sobre Front Controller, mas não entendi muito bem, não sou muito avançado em Java e não estou usando nenhum tipo de framework (fazendo tudo na mão com JSP). Vi algo sobre fazer na base do if mas isso me pareceu mais errado que deixar separado.
P.S.: Estava cursando engenharia de software esse periodo na faculdade e graças a greve não entendo muito dos termos técnicos, então favor explicar de forma mais completa/clara possivel.
Agradeço pessoal!
Uma grande parte dos frameworks web usa somente uma servlet e a partir daí redireciona as requisições para os controllers apropriados (que por sua vez estão separados em classes). O SpringMVC, por exemplo, faz isso, é um FrontController como você mencionou. Pra utilizá-lo você deve registrar o DispatcherServlet.
Eu não considero errado você ter várias servlets. Você precisa separar a lógica de alguma maneira, se não for separando por servlets, você vai precisar criar uma lógica que, com base na requisição, envie para um controller adequado. O controller é uma classe que você mesmo vai criar e ela vai tratar da requisição. Perceba que os frameworks fazem justamente isto.
Procure agrupar as servlets não por requisição, mas por contexto. Você pode ter uma servlet que trata de localidade, uma que trata de evento, etc. Assim como normalmente são os controllers.
Se você perceber que está gastando muito tempo pra fazer isso (tratar as requisições e enviá-las para classe/método adequado, converter parâmetros de requisição, etc.) considere o uso de um framework (a menos que esteja querendo aprender a fazer tudo no braço).
Agradeço a resposta Wagner.
Vou deixar os servlets separados por contexto mesmo como você sugeriu e fazer um if (que na verdade será um if else simples) somente para saber qual o tipo de requisição (cadastrar ou buscar). Acho que assim não fica muito bagunçado não.
Queria sim saber fazer isso na mão, não gosto de sair pegando coisa pronta e sair usando (fora que nunca mexi com frameworks, não sei nem configurar =p)
Mas é isso aí, quando eu tiver com tempo procuro como fazer isso na mão mesmo, obrigado.