Dúvida JSP Apostila fj21

Bom, tou fazendo a apostila da fj21 da Caelum e chegou em uma parte em que fala para colocar um link na tabela para poder alterar e tudo mais e passar o id por ela. Bom criei uma nova servlet e passo no link ela primeiro para popular e outra servlet pra poder pegar os dados e finalizar, enfim minha duvida é, ali onde passo o caminho da servlet no link teria como eu esconder a url que fica ali em cima e ficar só o /altera-contato.jsp sem o nome da servlet e o id que tá indo?

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@ page import=“java.util.,agenda.dao., agenda.modelo.*”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>

Insert title here
<table border="1">
	<tr>
		<th>Nome</th>
		<th>Email</th>
		<th>Endereço</th>
		<th>Data</th>
	</tr>
	<c:forEach var="contato" items="${dao.lista}">
		<tr>
			<td>${contato.nome}</td>
			<td>
			<c:if test="${not empty contato.email}">
			<a href=mailto:${contato.email}>${contato.email}</a>
			</c:if>
			<c:if test="${empty contato.email }">
			Email não informado.
			</c:if>
			</td>
			<td>${contato.endereco}</td>
			<td>
			<fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy" />
			</td>
			<td><a href="mvc?logica=AlteraContatoLinkLogica&id=${contato.id}">Alterar Contato</a></td>
		</tr>
	</c:forEach>
	
</table>
<c:import url="rodape.jsp"></c:import>
[/code]

brabuh,

Eu dei uma olhada na apostila.

Pelo que entendi, você quer saber por que não passar a página altera-contato.jsp diretor no link. Por que tem que passar um link para um servlet com parâmetros?

Se você chamar a página altera-contato.jsp direto no link, como essa página vai obter uma referência para o contato selecionado na lista?

Pelo que eu entendi na apostila, no link é colocada a url mvc e alguns parâmetros. A url mvc está direcionada para o servlet ControllerServlet (no web.xml). Esse servlet recebe um parâmetro chamado logica, contendo o nome da classe que contém a lógica a ser executada. Recebe também o parâmetro id.

A classe que contém a lógica se chama AlteraContatoLinkLogica. No método execute() essa classe irá obter o objeto Contato utilizando o id recebido. Irá direcionar para a página altera-contato.jsp, passando o objeto Contato como atributo.

Só achei um pouco estranho o nome AlteraContatoLinkLogica. Estou entendendo que essa classe irá obter o contato selecionado na lista e direcionar para a página altera-contato.jsp. Ou seja, ela ainda não vai alterar, só vai preparar a tela onde será feita a alteração.
Então acho que a classe que você chama de AlteraContatoLinkLogica poderia se chamar IniciaAlteracaoLogica, pois ela na verdade só inicia a alteração.

A url quando dou o alterar fica assim /mvc?logica=AlteraContatoLinkLogica&id=1 que é usada pra passar o id pra poder procurar no banco e retornar os dados e tudo mais o que eu queria era esconder isso, entendeu?

Entendi. Não sei outra forma de passar os parâmetros.