Na verdade a ideia do DAO eh que as outras camadas nao fiquem dependentes da implementacao da camada de acesso a banco de dados… As chamadas a camada DAO devem ocorrer em seu objeto de negocio ou em outra camada mas nao no JSP…
Na minha opnião o coneceito do DAO é separar a relação do cliente de um recurso dos dados de seu mecanismo de acesso dos dados.
Quando não existia nenhum framework(Hibernate, TopLink…) para fazer a conversão do mundo orientadoa a objetos para o
relacional, o DAO também funcionava como um ponte entre esse dois mundos.
Como o Cesar já falou, o ideal é que você acesse a camada de persistencia através de algum objeto da sua camada de negócios.
Evite acessá-lo da camada de visão ou até mesmo a de controle.
Bom, qdo não uso frameworks, eu normalmente faço assim (de maneira resumida):
jsp -> servlet -> POJO de negocio / listHandler -> DAO
jsp = responsavel pelo visual
servlet = responsavel por saber para que paginas ir e qual acao executar
POJO de negocio = POJOs com as regras de negocio que acessam os DAOs qdo necessario
listHandler = Classes de listagens, que acessam os DAOs
DAO = minha implementação da camada de acesso aos dados