Código Básico de Servlet - código sem erros mas não compila corretamente

5 respostas
B

Ok gente o meu problema é o seguinte, estou começando a aprender Servlet e o meu professor passou a seguinte questão:

[color=blue]Fazer um Servlet que apresente para o usuário a mensagem: ―Já sei fazer
um servlet‖ :
a) Crie uma página HTML com um link: ―Chamar Servlet‖
b) O link deve chamar uma Servlet.
c) A Servlet deve devolver para o usuário a mensagem: Já sei fazer
um servlet.[/color]

Simples não é? Pois então, eu fiz o código todo certinho. Na hora de compilar ele aparece a página jsp com o link mas quando clico para ir para a página que deveria conter a frase "Já sei fazer um servlet", ele apresenta o seguinte erro:

type Status report
message /Atividade1/servlets/Atividade1
description The requested resource (/Atividade1/servlets/Atividade1) is not available
.

Segue o meu código abaixo:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Iniciando</title>
</head>
<body>
<a href="servlets/MinhaServlet"> Chamar Servlet</a>
</body>
</html>

Minha servlet:

package controler;

import java.io.IOException;
import java.io.PrintWriter;

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

public class MinhaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public MinhaServlet() {
         }
		protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
			res.setContentType("text/html");
			PrintWriter out = res.getWriter();
			out.println("Já sei fazer uma servlet");
			out.close();		
	}
}

Bom, espero que vocês possam me ajudar e que eu tenha explicado direitinho. Realmente não sei o que pode estar acontecendo, deve ser algum erro bobo. Tenho um trabalho para fazer pra essa unidade e se não souber fazer no mínimo isso...
Agradeço desde já.

5 Respostas

C

O único erro está na lina 10 na pagina do link

Chamar Servlet

correto

<a href=“MinhaServlet”> Chamar Servlet

O caminho para uma servlet está sendo enviado via get sendo
assim o mapeamento se encarrega do resto.ok
Não sou muito bom para explicações mais é por esse
caminho.

B

Mas quando faço isso aparece diretamente a mensagem, não aparece o link antes :T

F

Você registro a servlet no web.xml??
se não, tenta fazer isso:

view plaincopy to clipboardprint?
package controler;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
@WebServlet(name="UmNomeParaAServlet", urlPatterns="/MinhaServlet") //Add essa linha aki!
public class MinhaServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    public MinhaServlet() {  
         }  
        protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {  
            res.setContentType("text/html");  
            PrintWriter out = res.getWriter();  
            out.println("Já sei fazer uma servlet");  
            out.close();          
    }  
}

E arruma o link como o Colbison disse também.

B

Ok pessoal, irei fazer isso, muito obrigada :slight_smile:

drsmachado
felipejm:
Você registro a servlet no web.xml?? se não, tenta fazer isso:
view plaincopy to clipboardprint?
package controler;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
@WebServlet(name="UmNomeParaAServlet", urlPatterns="/MinhaServlet") //Add essa linha aki!
public class MinhaServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    public MinhaServlet() {  
         }  
        protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {  
            res.setContentType("text/html");  
            PrintWriter out = res.getWriter();  
            out.println("Já sei fazer uma servlet");  
            out.close();          
    }  
}
E arruma o link como o Colbison disse também.
Camarada, precisa perguntar qual a versão do web module que ela está utilizando. Se for < 3.0 isto não funciona. A questão é que, primeiro, se o link acusa que o recurso não está disponível, realmente pode ser um problema causado pelo mapeamento da Servlet no web.xml. Para o caso específico, você pode adicionar o seguinte código ao seu web.xml, antes de
servlet>
    <servlet-name>MinhaServlet</servlet-name>
    <servlet-class>controller.MinhaServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MinhaServlet</servlet-name>
    <url-pattern>sevlets/MinhaServlet</url-pattern>
  </servlet-mapping>
Criado 27 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 5
Participantes 4