Lógica para alterar contato - caelum (ex 9.9/2)

Bom galera, é a minha primeira vez aqui, então me desculpem caso eu faça alguma besteira (e sintam-se livres pra me avisar delas). De qualquer modo, estou seguindo a apostila Caelum fj21 de Java Web. No capítulo 9, surgiu o seguinte exercício:

Coloque um link na sua lista-contatos-elegante.jsp que abre a página testa-altera-mvc.jsp passando
o Id do contato que você quer alterar. Deixe o campo Id visível no form mas não alterável. Não
esqueça de passar o campo Id pela requisição. Faça com que os campos do form estejam populados com
os dados do contato a ser editado.

O que eu quero fazer, já que estou na parte de MVC, é utilizar uma lógica que faz a busca do contato que o cliente deseja alterar e utilizar os dados que foram encontrados no BD (que estarão armazenados em um objeto do tipo Contato) para preencher os campos na tela de alteração. O problema é que eu não sei como jogar os dados contidos no meu objeto para a página JSP. Eu sei que posso utilizar a JSTL core, fazendo uso da jsp:useBean para instanciar um dao e fazer a busca na própria página JSP, mas não queria ir por esse caminho. Segue meu código:

Parte do código na JSP que seleciona a Lógica correta

<input type="hidden" name="logica" value="TestaAlteraContatoLogic" />
		<input type="submit" value="Alterar" />
		&lt;input type="text" name="id" /&gt;<br/>

Lógica que obtém o objeto “contato” com os dados utilizáveis.

public class TestaAlteraContatoLogic implements Logica{
	public void executa(HttpServletRequest request,HttpServletResponse response) throws Exception{
		Contato contato = new Contato();
		ContatoDAO dao = new ContatoDAO();
		long id = Long.parseLong(request.getParameter("id"));
		contato = dao.busca(id);
		
		RequestDispatcher rd = request.getRequestDispatcher("/testa-altera-mvc.jsp");
		rd.forward(request, response);
		System.out.println("Alterando contato ..." + contato.getNome());
	}
}

E esse é o método de busca de um contato no BD dentro da classe ContatoDAO

public Contato busca(long id){
		try{
			Contato contato = new Contato();
			PreparedStatement stmt = this.connection.prepareStatement("select from contatos where id=?");
			stmt.setLong(1,id);
			ResultSet rs = stmt.executeQuery();
			
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
				
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataNascimento"));
			contato.setDataNascimento(data);

			rs.close();
			stmt.close();
			return contato;
		}catch (SQLException e){
			
			throw new RuntimeException(e);
		}
	}

Agora, o que eu quero fazer é: após a execução da TestaAlteraContatoLogic eu redirecione para a JSP testa-altera-mvc.jsp onde eu vou ter os campos para alteração do contato previamente preenchidos com os dados do objeto contato. Alguma idéia?