Ir para conteúdo
Eduardo Benevides

"Página não encontrada" - Não consigo acessar página via servlet

Recommended Posts

Olá pessoal, estou revisando o material do curso fj-21 da caelum e me deparei com erro que não consigo resolver.

Eu possuo uma interface:

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;
}

e a implemento:

package br.com.caelum.mvc.logica;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PrimeiraLogica implements Logica{
    public String executa(HttpServletRequest request, HttpServletResponse response)throws Exception{
        return "primeira-logica.jsp";
        
    }
}

Depois tenho a classe Controller:

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
public class ControllerServlet extends HttpServlet{
    protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        String parametro=request.getParameter("logica");
        String nomeDaClasse="br.com.caelum.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 negocios causou uma exceção",e);
        }
        
    }
}

E a minha página .jsp:
 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>Primeria Lógica</h1>
</body>
</html>

Quando tento acessar a página via url - http://localhost:8080/fj21-agenda/mvc?logica=PrimeiraLogica diz que a página não pode ser encontrada.

Não consigo identificar a causa. Por favor me ajudem.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por laloproces
      Boa noite. Segue o texto do método main:
       
      /*O sistema basicamente faz é pedir informções para o usuário, pergutando quantas pessoas vai cadastrar, *qual o nome, telefone, se a pessoa trabalha, pede o cargo e a empresa para no final exibir essas informações na tela. */ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Quantas pessoas você vai cadastrar? (Somente números)\n"); int pessoas = (int)in.nextInt(); String[] nome = new String[pessoas]; String[] telefone = new String[pessoas]; String[] profissao = new String[pessoas]; String[] empresa = new String[pessoas]; int op = 0; for(int i=0; i<pessoas; i++) { System.out.println("\nDigite o nome do serumaninho:\n"); nome[pessoas] = in.toString(); //Tá dando erro aqui, provavelmente por causa da variável dinâmica pessoas System.out.println("\nDigite o telefone desse serumaninho:\n"); telefone[pessoas] = in.nextLine(); System.out.println("\nEsse vivente trabalha? (0 para não, 1 para sim)\n"); op = in.nextInt(); if(op == 1){ System.out.println("\nDigite a profissão dele:\n"); profissao[pessoas] = in.nextLine(); System.out.println("\nDigite o nome da empresa em que ele trabalha:\n"); empresa[pessoas] = in.nextLine(); } } for(int j=0; j<pessoas; j++){ if(op ==1){ Pessoa[] p = {new Profissional(nome[j], telefone[j], profissao[j], empresa[j])}; } else{ Pessoa[] p2 = {new Pessoa(nome[j], telefone[j])}; } } for(int h=0; h<pessoas; h++){ if(op==1){ Pessoa[] p = {new Profissional(nome[h], telefone[h], profissao[h], empresa[h])}; System.out.println(Arrays.toString(p)); } else{ Pessoa[] p2 = {new Pessoa(nome[h], telefone[h])}; System.out.println(Arrays.toString(p2)); } } } //Abaixo estão as classes, que estão em outros arquivos Java. public class Pessoa { public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public String getTelefone(){ return telefone; } public void setTelefone(String telefone){ this.telefone = telefone; } private String nome; private String telefone; Pessoa(String nome, String telefone){ this.nome = nome; this.telefone = telefone; } void exibir(){ System.out.println(getNome()+" :: "+getTelefone()); } } //Abaixo a classe Profissional, derivada da classe Pessoa. public class Profissional extends Pessoa { private String profissao; private String empresa; public String getProfissao(){ return profissao; } public void setProfissao(String profissao){ this.profissao = profissao; } public String getEmpresa(){ return empresa; } public void setEmpresa(String empresa){ this.empresa = empresa; } Profissional(String nome, String telefone, String profissao, String empresa){ super(nome, telefone); this.profissao = profissao; this.empresa = empresa; } @Override public void exibir(){ super.exibir(); System.out.println("\tTrabalha como "+profissao+"no(a) "+empresa+"."); } } Minha dúvida é: como posso corrigir o problema sem tirar a maneira dinâmica do sistema e se da maneira como fiz não irá gerar outros erros ou poderia fazer de uma maneira mais simples.
      Desde já agradeço!
    • Por MateusOFCZ
      Olá, estou desenvolvendo um BOT utilizando java, javascript e node.js, gostaria de saber se tem como eu fazer um painel em java (arquivo executável) onde tem um campo de texto (Que é digitado um tema, exemplo "Brasil"), uma lista com 3 itens (Quem é, O que é e A história do(a), você iria selecionar, por exemplo no campo de texto você digitou "Brasil" e na lista você selecionaria "A história do(a)"...) como faço pra quando clicar no botão "Enviar" ele iria executar um comando em node.js adicionando as informações (Tema e Opção).

       


      Caso não tenha entendido posso tentar explicar de uma forma mais clara!
    • Por MateusOFCZ
      Olá, estou criando um bot em node.js no VS Code, gostaria de saber se tem como fazer um painel para executar os comandos dele.
      Vamos supor que o BOT é para fazer uma pesquisa, e teria um painel em JAVA onde teria um campo para enviar mensagem, eu digitaria o tema da pesquisa, por exemplo Terra, e o BOT iria pesquisar e me retornar um texto sobre o tema digitado.

      Já procurei no github, porém não achei nada que eu poderia usar como base, o que eu quero saber é se tem como ligar o node.js com o java, ou seja, fazer com que o java execute o comando no terminal e depois retorna a resposta.
    • Por MaykeRibeiro
      Pessoas, boa tarde!
      Meu primeiro tópico no fórum <3
       
      Estou com um probleminha e vou resumir para vocês. 
      Eu tenho um site Ex: www.google.com que direciona para um sistema java rodando em um tomcat em um servidor local com ip externo e porta ex: 177.158.158.14:8080
      Quando os usuários entram no site eu direciono para o servidor, o problema é que no navegador a url muda para p IP:Porta do meu servidor e eu gostaria que ficasse com o nome do site. 
      Alguma dica ?

       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.