Perdido no Mundo dos Servlets

20 respostas
D

E ai pessoal?

Estou tentando rodar um exemplo de servlet que encontrei na web, mas o Eclipse não está reconhecendo os imports

import javax.servlet.*;
import javax.servlet.http.*;

A versão do Eclipse que estou usando é a 2.1.3 e o servidor é o Tomcat 4.1.18

Desde já agradeço e aguardo respostas

[]'s

20 Respostas

C

Tchê tu tem que adicionar a api Servlet.jar no classpath, ou na biblioteca(JRE Library) da tua IDE, ai ele vai reconhecer…

Abraço!

S

Você pode pegar este servlet.jar e colocar em TOMCAT_HOME/common/lib que o tomcat sempre carrega na memória quando for erguido, ou colocar no web-inf/lib da sua aplicação.

Valeu? :okok:

D

Bom, eu ja coloquei o servlet.jar no classpath

eu ainda não consegui compilar atraves do eclipse, mas usando o

javac HelloServlet.java

compilou de boa! :lol:
Valeu pela ajuda!

Agora eu não sei como eu faco pra poder rodar esse servlet… :cry:

Essa é a primeira vez que eu estou usando o Tomcat e criando um servlet…
O conceito de servlet em si eu entendo na boa(pq ano passado eu aprendi o conceito de CGI) e me disseram que servlet era similar a CGI

alguem poderia me explicar se existe alguma diferença significativa :?:

J

Oi

Diego, confere aí um Tutorial de Servlets aqui do PJ

http://www.portaljava.com/home/modules.php?name=Content

T+

D

Olha eu de novo

Fiz tudo certinho conforme no tutorial, mas ainda assim não consegui rodar a minha servlet… :cry:
Quando eu chamo a minha servlet aparece no browser a seguinte mensagem de erro:

HTTP Status 503 - Servlet HelloServlet is currently unavailable

Será que tem alguma coisa que tenho que fazer no Tomcat? Onde posso encontrar algum tutorial sobre ele?
Alguem, por favor, poderia me ajudar?

Brigado pela ajuda e t+ pessoal

D

[color="red"]PS:[/color] esqueci de mencionar antes que na primeira vez em que eu tento rodar o meu servlet (O servet ou A servlet?) ocorre o erro:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.
pra depois mostrar a outra mensagem do pos anterior

Não sei se faz alguma diferenca, mas achei melhor informar...

M

Diego, vamos acabar com esse teu problema duma vez, heaheah, coloca ai o código do teu serlvet (eu digo o servlet) e o teu web.xml :cool:

D

Bom ta ai os códigos:

o do Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws IOException, ServletException {
	String oi = "Olá mundo Servlet!";
	PrintWriter out = response.getWriter();

	out.println("<html>");
	out.println("<body>");
	out.println("<center><h1>" + oi + "</h1></center>");
	out.println("</body>");
	out.println("</html>");
	}
}

e o do web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/HelloServlet</url-pattern>
	</servlet-mapping>
	
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>

</web-app>
M

e como tu ta chamando o teu servlet no browser? dica: coloca ele num package…

D

to chamando assim:

http://localhost:8080/teste/HelloServlet

com relação ao package eu não me lembro de ter visto em nenhum exemplo, mas eu vou tentar…
:roll:

D

ainda não deu em nada…

:telazul:

putz, ja faz quase uma semana que eu to aqui so tentando rodar um HelloWorld em Servlet :cry: :cry: :cry:

:choroo:

alguem sabe de algum material do tomcat e de XML bom? pq eu to achando que eu não configurei o tal do tomcat direito e/ou escrevi o web.xml errado…

agradeço qualquer ajuda!

J

Diego,

Segue um tutorial de instalação do tomcat .
A poucas semanas passei pelos mesmos problemas que você, e conseguí resolvê-los aquí no portal e fuçando na net.

http://www.mhavila.com.br/topicos/java/tomcat.html.

Espero ter ajudado um pouco.

J

“DiegoDiSouza”:
to chamando assim:

http://localhost:8080/teste/HelloServlet

com relação ao package eu não me lembro de ter visto em nenhum exemplo, mas eu vou tentar…
:roll:

Cara tente fazer um teste…

No tomcat crie uma pasta teste conforme abaixo:

Tomcat 5.0/webapps/teste

-dentro da pasta teste criada coloque uma pasta vazia WEB-INF
-dentro desta pasta WEB-INF coloque uma pasta classes
-ainda dentro do WEB-INF coloque o arquivo web.xml que você criou, aparentemente ele está correto.
-dentro da pasta classes que você criou coloque seu servlet (HelloServlet) compilado no DOS mesmo (javac …)
-agora chame seu servlet como você fez acima

veja se procede :grin:

L

Pessoal

Sou novo por aqui e estou passando pelo mesmo problema do Diego.
Estou com problemas para compilar o HelloServlet.

O código é identico ao do Diego, mas quando compilo ele com o javac, ele acusa que o package javax.servlet não existe. Já no eclipse compila normalmente, mas quando eu vou rodar a servlet, o Tomcat acusa um erro de compilação na linha de declaração do package do Servlet (quando eu compilei com o javac eu tirei a linha de declaração do package).

Detalhe, eu ja tenho o servlet.jar na common/lib do Tomcat (5.0) e também no classpath ( c:/j2sdk1.4.1_03/lib).

Portanto, eu não faço a menor idéia do que esteja acontecendo…

Uma coisa que também me deixou intrigado foi que o comando javac só funciona se eu estiver no diretório onte está o programa (c:/j2sdk1.4.1_03/bin). Isso é normal?

Abracos

M

bem-vindo(a) ao Portal Java londrina…! bem, antes de tudo, certifique-se de q definiu as variáveis de ambiente JAVA_HOME e CLASSPATH no teu sistema… :slight_smile:

D

E ai pessoal, depois de uma folga com as servlets eu consegui (e entendi) como rodar as servlets! :diabo:

O que acontece é o seguinte:

No código do servlet eu não havia declarado um package. Dai eu coloquei o HelloServlet.java dentro de um package conforme o código abaixo:

package hello;

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class HelloServlet extends HttpServlet { 
   public void doGet(HttpServletRequest request, HttpServletResponse response) 
   throws IOException, ServletException { 
   String oi = "Olá mundo Servlet!"; 
   PrintWriter out = response.getWriter(); 

   out.println("<html>"); 
   out.println("<body>"); 
   out.println("<center><h1>" + oi + "</h1></center>"); 
   out.println("</body>"); 
   out.println("</html>"); 
   } 
}

até ai tudo bem, mas eu não havia me tocado que deveria indicar no web.xml qual o pacote em que o meu servlet estava, ou seja, não iria encontrar o HelloServlet.class nunca… :roll: :roll: :roll:
Dai foi só arrumar o web.xml, que ficou assim:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>hello.HelloServlet</servlet-class>
    </servlet>
	
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
	
</web-app>

Jonhsonw: eu tava usando esse tutorial como referência, que por sinal explica direitinho como setar as variáveis de ambiente… Valew pela dica!
Matheus: Valeu mesmo pela dica dos packages!
Brigadão a todos que me ajudaram e que essa explicação possa ajudar muitos outros que tb passaram por esse problema…
[]'s
T+

D

PS.: Quando eu tava com os problemas pra rodar esses servlets, eu não tava conseguindo me concentrar pra buscar uma solução. Quinta e sexta eu não trabalho(pq eu tenho aula) e no sabado eu sai pra curtir a night (que por sinal teve muito boa hehehehe :brinde: ).
Ai hj peguei e entendi direitinho o que q tava acontecendo…

Moral da História: vale pra qualquer tipo de problema, tente manter a calma quando não conseguir resolver problemas simples. Entrar em pânico e ficar estressado não ajuda nada!

L

O meu problema era com as variáveis de ambiente mesmo… Finalmente consegui compilar o programa. Mas agora surgiu outro problema: Quando eu vou executar ele no Browser, o Apache acusa que ele não existe (O meu Tomcat está integrado com Apache). Consegui resolver isso colocando a extensão .jsp no web.xml (<url-pattern>/HelloServlet.jsp</url-pattern>).
Assim o Tomcat identifica ele, meio estranho isso, não???

Mas mesmo assim eu fiquei preocupado com uma coisa. Quando eu chamei a servlet no IE, ocorreu tudo bem, ele mostrou na tela a frase “Olá mundo servlet!”.

Já no Mozilla Firefox ele mostra o código html na tela:
<html>
<body>
<center><h1>Olá mundo Servlet!</h1></center>
</body>
</html>

Será que eu preciso progamar de diferentes maneiras para cada browser??

Abracos

M

tente corrigir isso colocando essa linha no teu servlet:

response.setContentType&#40; "text/html" &#41;;

:grin:

L

Realmente no outro código que eu estava tentando tinha esse comando.

Valeu pela ajuda matheus

Criado 11 de agosto de 2004
Ultima resposta 25 de ago. de 2004
Respostas 20
Participantes 7