voce pode fazer assim, voce tem as JSPs e nas JSPs voce tem seus formulários, vamos supor que voce vá inserir um contato, entao voce tem o form com os campos, dai voce pode criar um campo hidden chamado "inserir", +- assim
<form action="/minhaServlet" method="POST" >
<input type="hidden" value="inserir" name="acao" />
<!-- os campos a preencer e o botao de enviar -->
</form>
dai lá na servlet voce pode fazer assim:
public doPost (os parametros que ele passa){
String acao = request.getParameter("acao");
Contato contato = new Contato();
DaoContato dao = new DaoContato();
if("inserir".equals(acao)){
// aqui voce populao bean, aconcelho a delegar isso a um metodo de alguma classe, um facade por exemplo, pra ficar mais bonitinho e nao tao errado
dao.inserir(contato); // aqui voce passa o bean ja populado so para fazer o insert
} else if("update".equals(acao)){
//aqui voce chama o metodo update na dao, LEMBRE-SE que voce precisa passar o ID do contato a ser atualizado, entao voce popula o bean JA COM o seu id e seus novos valores
// contato sendo populado
dao.update(contato);
}else if ("delete".equals(acao)){
// acho que aqui voce ja pegou o espirito da coisa
}
}
é bem rudimentar mas quebra um galho enorme para nao ficar criando varias servlets desnecessariamente!
viu?! um CRUD usando apenas uma servlet!!
dai mais pra frente voce pode ler um pouco sobre o padrao FACADE (http://www.devmedia.com.br/o-padrao-facade-aplicado/12683), onde voce pode abstrair algumas coisas no facade, como por exemplo, voce pode pedir para o facade popular seus beans. ou voce pode mandar o facade acessar a dao ao invés da servlet fazer isso.... a servlet acessa o metodo inserir do facade e ai voce trabalha algo mais se tiver que trabalhar com o bean e dai o facade repassa o objeto para a dao.
bons estudos!