Estou desenvolvendo um siteminha web, ai surgiu uma dúvida quanto a quantidade de servlets
que eu devo ter no meu sistema.
Eu estava pensando em ter um mínimo possível, só que ai como eu faria?
Eu devo ter uma servlet para cada página web que possa gerar um request?
Eu posso fazer uma servlet servir para mais de uma página agrupando por
uma característica específica? Por exemplo uma servlet para as consultas, outra
para cadastros em geral? Estou meio perdido.
No momento não pretendia usar nenhum framework.
Ola,
Você até pode utilizar o Servlet para tratar vários requests. Nesse caso você além de chamar o request, passaria algum parametro para ele (via http request) e então o seu método doGet ou doPost iria redirecionar para o método correto, porém eu particularmente não gosto disso e acho que a partir do momento que o projeto vai crescendo, a manutenção fica mais complicado.
Pense no Servlet como o controller da sua aplicação, ele deve tratar o request, chamar a camada de negócio e depois devolver as informações para a view, ou seja, seu processamento deve ser simples e direto. Se começar a encher de método nele, ele vai acabar ficando grande e complicado. Assim sendo, eu particularmente prefiro um servlet por request. É fundamental com esse approach definir muito bem os pacotes de cada servlet, para não perder o controle, pois assim você terá bastante classes, mas elas com responsabilidade e códigos pequenos.
PS: Isso é a minha opinião
pois é cara, se tu usasse um framework (vraptor, struts, etc…)
ele faria apenas 1 servlet e iria mapear as “actions” para suas classes/metodos java…
respondendo a sua pergunta:
Use 1 servlet para cada unidade do negocio…
ou seja…
não misture no mesmo servlets coisas que não tem nada a ver.
por exemplo
cadastrar uma cidade e um estado, podem estar no mesmo servlet, pois são cadastro de endereço
mesmo sendo duas coisas distintas…(estado e cidade)
mais ai na hora de cadastrar um produto, use outro servlet.
Se eu tenho uma classe Empresa e EmpresaDAO,
eu faço uma servlet para cadastrar/alterar/excluir/consultar
a empresa ou uma servlet pra cada?
Pensando em deixar o sistema com fácil manutenção.
Porque uma servlet para cada coisa ia deixar o meu sistema com muitas servlets mesmo.
a principio podes seguir a ideia de pra cada DAO, um servlet
mais o certo é pra cada Service um servlet…
dentro do Service vc podes ter varios DAOs…
por exemplo, num EmpresaService
vc podera ter o incluirEmpresa()
e ai vc pode usar um EmpresaDAO para o cadastro, que esta dentro do service
e aproveitar e usar um EnderecoDAO para cadastrar o endereço dessa empresa…
mesmo sendo um service de Empresa, pode ter um DAO de endereço, pois esta sendo usado para cadastrar a empresa…
entendeu? ou complicou? 
Tá, complicou mas acho que entendi;
Um servlet por request, ai no EmpresaService
eu chamo alguma coisa que não seja de empresa
mas que tenha a ver com ela.
É isso?
Isso, considere Services como um agrupador de DAOs que
a principio não estão relacionados entre si, porem para a regra de
negocio da sua app precisam interagir 
Valeu mesmo. Estou começando a compreender
a lógica da coisa…