Try
Março 14, 2021, 6:07pm
#1
Olá, guys alguém pode me corrigir em dizer o que esta errado com este codigo? A página não é acessada com tento => http://localhost:8080/fj21-agenda/mvc?logica=PrimeiraLogica
package br.com.caelum.mvc.logica;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Logica {
String executa(HttpServletRequest request, HttpServletResponse response)
throws Exception;
}
package br.com.caelum.mvc.logica;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PrimeiraLogica implements Logica {
@Override
public String executa(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Executando a primeira logica...");
System.out.println("Retornando o nome da p�gina JSP...");
return "primeira-logica.jsp";
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Página da nossa primeira lógica</h1>
</body>
</html>
package br.com.caelum.mvc.servlet;
import java.io.IOException;
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.caelum.mvc.logica.Logica;
@WebServlet("/mvc")
public class ControllerServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String parametro = request.getParameter("logica");
String nomeDaClasse = "br.com.cealum.mvc.logica." + parametro;
try {
Class classe = Class.forName(nomeDaClasse);
Logica logica = (Logica)classe.newInstance();
String pagina = logica.executa(request, response);
request.getRequestDispatcher(pagina).forward(request,response);
} catch (Exception e) {
throw new ServletException("A lógica de negócio causou uma exceção", e);
}
}
}
Dá algum erro?
Está printando aquelas mensagens “Executanto a primeira lógica”, etc?
Try
Março 14, 2021, 9:02pm
#3
Esta me retornado a página que fiz “página não encontrada” do erro 404.jsp
Você escreveu um código pra mandar pro 404?
Posta ele tbm.
Try
Março 14, 2021, 10:39pm
#5
sim, aquela configuração que faz no web.xml
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
Try
Março 14, 2021, 10:49pm
#6
Quando deleto esta configuração, aparece no navegador isto:
# HTTP Status 404 – Not Found
Type Status Report
Message The requested resource [/fj21-agenda/mvc] is not available
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
### Apache Tomcat/9.0.43
Try
Março 15, 2021, 12:41am
#8
Será que o problema tem a ver com o método classe.newInstance(); ele aparece riscado no Eclipse. Ele foi descontinuado?
Ele está depreciado. A nova forma é classe.getConstructor().newInstance().
Mas isso não influencia.
Parece que seu servlet não é chamado…
Tenta seguir esses passos: https://stackoverflow.com/a/26247021/5937189
Pode ser alguma incompatibilidade com o Tomcat.
Try
Março 15, 2021, 2:18pm
#10
Eu não entendi muito bem o que eu posso fazer utilizabdo a solução dada por la. Meu sistema não tem o método main… Aonde eu vou colocar este código?
String contextPath = "/";
String webappDirLocation = "src/main/webapp/";
String baseDirectory = new File(webappDirLocation).getAbsolutePath();
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
StandardContext context = (StandardContext) tomcat.addWebapp(contextPath, baseDirectory);
// Additions to make @WebServlet work
String buildPath = "target/classes";
String webAppMount = "/WEB-INF/classes";
File additionalWebInfClasses = new File(buildPath);
WebResourceRoot resources = new StandardRoot(context);
resources.addPreResources(new DirResourceSet(resources, webAppMount, additionalWebInfClasses.getAbsolutePath(), contextPath));
context.setResources(resources);
// End of additions
tomcat.start();
tomcat.getServer().await();
Try
Março 15, 2021, 2:19pm
#11
Tentei o tomcat 7, mas támbem continuou o mesmo problema de página não encontrada.
Crie uma classe, coloque esse método main e execute a classe pelo IDE.
Também tem o server GlassFish. Poderia testar com ele.
Try
Março 15, 2021, 9:38pm
#13
É uma pena, eu fiz este curso na Caelum a 5 anos e tudo funcionva direito…
O problema pode está no Eclipse também? Eu estou usando o Eclipse IDE for Enterprise Java Developers - 2020-12 e percebi que nele não tem a opção de instalar o GlassFish
Acho que não.
Tenta fazer o esquema do método main.
Try
Março 18, 2021, 1:30pm
#15
Estudei um material mais recente e descobri algumas mudanças. Agora está funcionando.
Pode dizer qual mudança em específico?
Try
Março 18, 2021, 2:15pm
#17
Eu deletei tudo que eu tinha e comecei do zero. Baixai .jars atuais. Como eu não consertei o código antigo eu não saberia exatamente o que foi.
1 curtida