Pessoal, boa noite.
Testando minha aplicação localmente, funciona sem problema. Porém, quando faço o deploy para o Google Cloud App Engine, a pagina inicial (index.jsp) abre normalmente, porem quando redireciono para outra pagina, a pagina não é encontrada.
Por exemplo, se estou na pagina inicial e clico para listar cliente, a aplicação deve:
1 - Direcionar para a servlet /executar -> Controller.java
2 - Chamar o metodo executar do ListaCliente.java
3 - Direcionar paga a pagina listaCliente.jsp
Porém, apresenta o erro abaixo:
Error: Not Found The requested URL /executar was not found on this server.
Alguem poderia ajudar? Essa estrutura do Controller.java utilizei do curso de Servlet do Alura
Segue abaixo código:
INDEX.JSP
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<form action="executar" method="POST">
<input type="hidden" name="tarefa" value="ListaCliente">
<input type="submit" value="Listar Clientes">
</form>
<form action="executar" method="POST">
<input type="hidden" name="tarefa" value="InsereCliente">
<input type="submit" value="Inserir Clientes">
</form>
<!-- <img src="imagens/cliente.png"/> -->
</body>
</html>
Controller.java
package br.com.bariotti.cadastroclienteweb.web;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.bariotti.cadastroclienteweb.interfaces.Tarefa;
@WebServlet(urlPatterns = "/executar")
public class Controller extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String tarefa = req.getParameter("tarefa");
if(tarefa == null) throw new IllegalArgumentException("Voce esqueceu de passar a tarefa");
tarefa = "br.com.bariotti.cadastroclienteweb.web." + tarefa;
try
{
Class<?> tipo = Class.forName(tarefa);
Tarefa instancia = (Tarefa) tipo.newInstance();
String pagina = instancia.executa(req, resp);
RequestDispatcher dispatcher = req.getRequestDispatcher(pagina);
dispatcher.forward(req, resp);
}
catch (Exception ex)
{
throw new ServletException(ex);
}
}
}
ListaCliente.java
package br.com.bariotti.cadastroclienteweb.web;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.bariotti.cadastroclienteweb.controller.ClienteController;
import br.com.bariotti.cadastroclienteweb.interfaces.Tarefa;
import br.com.bariotti.cadastroclienteweb.model.Cliente;
public class ListaCliente implements Tarefa {
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
Collection<Cliente> clientes = ClienteController.retornarCliente();
req.setAttribute("clientes", clientes);
return "/WEB-INF/listarCliente.jsp";
}
}
listarCliente.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<h2>Resultado da busca:</h2>
<br>
<br>
<table border="2" cellpadding="10" bordercolor="blue">
<tr>
<td>Id</td>
<td>Nome</td>
<td>Documento</td>
<td>Tipo</td>
<td>Avatar</td>
<td>EXCLUIR</td>
<td>ALTERAR</td>
</tr>
<c:forEach var="c" items="${clientes}">
<form action="executar" method="POST">
<!-- <input type="hidden" name="tarefa" value="ExcluiCliente"> -->
<input type="hidden" name="id" value="${c.id}">
<input type="hidden" name="nome" value="${c.nome}">
<input type="hidden" name="documento" value="${c.documento}">
<input type="hidden" name="tipo" value="${c.tipoCliente}">
<input type="hidden" name="tipo" value="${c.imagem}">
<tr>
<td><c:out value="${c.id}" /></td>
<td><c:out value="${c.nome}" /></td>
<td><c:out value="${c.documento}" /></td>
<td><c:out value="${c.tipoCliente}" /></td>
<td><img width="80px" height="80px" src="${c.mediaLink}"></td>
<td><input type="submit" name="tarefa" value="ExcluiCliente"></td>
<td><input type="submit" name="tarefa" value="PreAlteraCliente"></td>
</tr>
</form>
</c:forEach>
</table>
<br><br>
<c:url value="/index.jsp" var="urlIndex"/>
<a href="${urlIndex}">Voltar a pagina principal</a>
</body>
</html>