Servlets

Boa Tarde Galera!
Bom, to começando agora a mexer com Servlets, achei um tutorial e fiz o exemplo q eles deram…criei uma classe chamada HelloServlet. Ai iniciei o Tomcat, criei uma pasta chamada HelloServeltApp e dentro dela criei uma pasta chamada WEB-INF onde coloquei o arquivo web.xml e outra pasta chamada classes, onde coloquei meu arquivo .class.
Abri o browser e digitei: http://localhost:8080/HelloServletApp/HelloServlet

Porém, deu-se o seguinte erro:
HTTP Status 404 - /HelloServletApp/HelloServlet


type Status report

message /HelloServletApp/HelloServlet

description The requested resource (/HelloServletApp/HelloServlet) is not available.


Apache Tomcat/4.1.30

ALGUÉM PODERIA ME AJUDAR, POR FAVOR!!!
ANTECIPO MEUS AGRADECIMENTOS!

ABS,
Elizabeth

Olá, vc deve declarar e mapear sua Servlet no arquivo web.xml, vc fez isso?

Segue um exemplo:

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>pacote.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>

Eu fiz isso sim, mas não funciona.

Elizabeth,

Você está criando a estrutura de pacotes corretamente?

Cole seu código pra ver se tem algo errado…

[]s

Phillip Calçado

Segue o código do meu we.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>
<!-- Indica ao Tomcat as Servlets da nossa aplicação -->

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>pacote.HelloServlet</servlet-class>
</servlet>

<!-- Define um padrão de url através do qual a HelloServlet será acessada. No caso qualquer url
do tipo “http://localhost:8080/HelloServletApp/QualquerCoisa.teste” faz com que a nossa
HelloServlet seja chamada–>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
*.teste
</servlet-mapping>

<!-- Define outro padrão de url através do qual a HelloServlet será acessada. No caso, a url “http://localhost:8080/HelloServletApp/HelloServlet
faz com que a nossa HelloServlet seja chamada–>

<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
HelloServlet
</servlet-mapping>

<session-config>
<session-timeout>30</session-timeout> <!-- 30 minutos -->
<realm-name>Tomcat Supported Realm</realm-name>
</session-config>

</web-app>

é só isso q quer ver?
Obrigada

1 - Coloque o codigo do seu servlet
2 - Como esta sua estrutura de diretorio? Tem que ser classes>pacote>HelloServlet.class

[]s

Se sua pasta não está dentro de dirDoTomcat/webapps

É necessário alterar o arquivo dirDoTomcat/conf/server.xml, adicionando a seguinte linha antes do final da tag </Host>

&lt;Context path=&quot;/nomeQualquer&quot; docBase=&quot;c&#58;\HelloServletApp&quot; debug=&quot;1&quot; reloadable=&quot;true&quot;/&gt;

Então, com os outros arquivos bem configurados, poderá acessar o endereço
http://localhost:8080/nomeQualquer

Obrigada a vcs que responderam…

Minha pasta esta no DirdoTomcat e o meu arquivo .class esta em classes>pacote>HelloServlet, mesmo assim não funciona…

Não sei o q tá havendo, tudo o q vcs disseram eu fiz, tá tudo certinho…mas não funciona…

Sua pasta está dentro do diretório WEBAPPS do tomcat?

E essas duas partes no seu web.xml

 &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
*.teste
&lt;/servlet-mapping&gt; 

 &lt;servlet-mapping&gt;
&lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
HelloServlet
&lt;/servlet-mapping&gt; 

estão incorretas, retire os valores que estão fora das tags.

Na tag <servlet-class> tem certeza absoluta que colocou o endereço da classe correto? Digitou certo o pacote todo?

Outra coisa: os exemplos estão funcionando?

E, por útlimo: não esquenta que pra rodar o primeiro é sempre essa dor mesmo hehe

Bom Dia Lipe,

Sim, minhas pastas estão dentro do diretorio webapps do tomcat. O caminho esta correto:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>pacote.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
HelloServlet
</servlet-mapping>

esta tudo certo…mas to com uma dúvida, eu compilei o arquivo HelloServlet.java em outra máq. dps só passei o arq. .class p minha máquina…isso interfere em alguma coisa?
Segue o código do meu HelloServlet.java:
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
{
//vamos definir o tipo de conteúdo
// que sera desenvolvido pelo response
response.setContentType(“text/html”);

	PrintWriter out=response.getWriter();

	//Agora vamos escrever o conteúdo da pagina
            
	out.println("&lt;HTML&gt;");
	out.println("<BODY>");
	out.println("&lt;H1&gt;Hello World! &lt;/H1&gt;");
	out.println("</BODY>");
	out.println("&lt;/HTML&gt;");
}

}

OBRIGADA! :wink:
Elizabeth

Se o caminho do pacote está idêntico na máquina atual, não há problema.

Arrume essa parte

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
    HelloServlet
&lt;/servlet-mapping&gt; 

O correto é

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
&lt;/servlet-mapping&gt;

Você ainda está recebendo o mesmo erro? Olhe o log do Tomcat com bastante cuidado, provavelmente ele está dizendo onde exatamente ocorre a exceção.

Ola, Elizabeth

Pelo que percebi seu classe não está dentro de nenhum pacote. Experimente colocar a sua classe dentro de um pacote, por exemplo:


package teste;

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

public class HelloServlet extends HttpServlet
&#123;
    public void doGet&#40;HttpServletRequest request, HttpServletResponse response&#41; throws IOException, ServletException
    &#123;
        //vamos definir o tipo de conteúdo
        // que sera desenvolvido pelo response
        response.setContentType&#40;&quot;text/html&quot;&#41;;

        PrintWriter out=response.getWriter&#40;&#41;;

        //Agora vamos escrever o conteúdo da pagina

        out.println&#40;&quot;&lt;HTML&gt;&quot;&#41;;
        out.println&#40;&quot;&quot;&#41;;
        out.println&#40;&quot;&lt;H1&gt;Hello World! &lt;/H1&gt;&quot;&#41;;
        out.println&#40;&quot;&quot;&#41;;
        out.println&#40;&quot;&lt;/HTML&gt;&quot;&#41;;
    &#125;
&#125;

Ai vc declara sua Servlet no arquivo web.xml desta maneira:


&lt;servlet&gt;
    &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;teste.HelloServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/HelloServlet&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt; 

Para testar no seu navegador vc digita: http://localhost:8080/nomedasuaaplicacao/HelloServlet

Elizabeth, você precisa alterar o arquivo server.xml que fica na pasta Apache Tomcatconf
Acrescente a linha <Context path="/HelloServletApp" docBase=“HelloServletApp” debug=“0” privileged=“true”/> neste arquivo perto das outras deste tipo.

[]s

Leandro

Leandro, alterei o arquivo server.xml na pasta especificada e continua não funcionando, rs.
Já não sei mais o q fazer…

Agradeço a ajuda!

Abs
Elizabeth

etrutura:

c&#58;elizabeth
|-------------WEB-INF
			  |-------- classes
			  			|-------teste
			  					|-------- HelloServlet.class
			  |-------- lib
			  |-------- web.xml

web.xml

[code]
<?xml version="1.0"?>
<!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>

&lt;servlet&gt;
	&lt;servlet-name&gt;hello&lt;/servlet-name&gt; 
	&lt;servlet-class&gt;teste.HelloServlet&lt;/servlet-class&gt; 
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;hello&lt;/servlet-name&gt;
	&lt;url-pattern&gt;hello.servlet&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

</web-app>[/code]

server.xml, adicione logo antes da tag </host>

&lt;Context path=&quot;/elizabeth&quot; docBase=&quot;c&#58;elizabeth&quot; debug=&quot;1&quot; reloadable=&quot;true&quot;/&gt;

url

http&#58;//localhost&#58;8080/elizabeth/hello.servlet