Servlets

14 respostas
Elizabeth

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

14 Respostas

leonardom

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>
Elizabeth

Eu fiz isso sim, mas não funciona.

pcalcado

Elizabeth,

Você está criando a estrutura de pacotes corretamente?

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

[]s

Elizabeth

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

pcalcado

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

[]s

_fs

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="/nomeQualquer" docBase="c&#58;\HelloServletApp" debug="1" reloadable="true"/&gt;

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

Elizabeth

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…

_fs

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

Elizabeth

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 certomas to com uma dúvida, eu compilei o arquivo HelloServlet.java em outra máq. dps  passei o arq. .class p minha máquinaisso interfere em alguma coisa?

Segue o código do meu HelloServlet.java:

import <a href="http://java.io">java.io</a>.<em>;

import javax.servlet.</em>;

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

_fs

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.

leonardom

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;"text/html"&#41;;

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

        //Agora vamos escrever o conteúdo da pagina

        out.println&#40;"&lt;HTML&gt;"&#41;;
        out.println&#40;""&#41;;
        out.println&#40;"&lt;H1&gt;Hello World! &lt;/H1&gt;"&#41;;
        out.println&#40;""&#41;;
        out.println&#40;"&lt;/HTML&gt;"&#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

Leandro_BSB

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

Elizabeth

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

_fs
etrutura:
c&#58;elizabeth
|-------------WEB-INF
			  |-------- classes
			  			|-------teste
			  					|-------- HelloServlet.class
			  |-------- lib
			  |-------- web.xml
web.xml
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE web-app PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot; 
	&quot;http&#58;//java.sun.com/dtd/web-app_2_3.dtd&quot;&gt;

&lt;web-app&gt;

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

&lt;/web-app&gt;
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
Criado 14 de setembro de 2004
Ultima resposta 27 de set. de 2004
Respostas 14
Participantes 5