Servlet! Preciso do procedimento certo, coisa simples

16 respostas
J

***Olá Pessoal, tenho o seguinte servlet em:
C:\Apache Tomcat 4.0\webapps\ROOT\now\WEB-INF\classes\ExemploServlet01

***Para localiza-lo no browser tento por:
http://localhost:8080/now/WEB-INF/classes/ExemploServlet01

(e não é localizado, como deve ser ?)

***O arquivo .xml é o seguinte:

<?xml version=“1.0” encoding=“UTF-8”?>

<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN” “<a href="http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">http://java.sun.com/j2ee/dtds/web-app_2_2.dtd</a>”>

<servlet>

<servlet-name>ExemploServlet01</servlet-name>

<servlet-class>pacote.ExemploServlet01</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ExemploServlet01</servlet-name>

<url-pattern>/ExemploServlet01</url-pattern>

</servlet-mapping> l

</welcome-file>

<welcome-file>

index.htm

</welcome-file>

</welcome-file-list>

</web-app>
<em><em><em>O codigo do servlet é:

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

import javax.servlet.</em>;

import javax.servlet.http.</em>;

public class ExemploServlet01 extends HttpServlet {

public void doGet(HttpServletRequest solicitacao, HttpServletResponse resposta) throws ServletException, IOException {

	PrintWriter out;
	
	resposta.setContentType("text/html");  
	out = resposta.getWriter();
	
	
	out.println("&lt;html&gt;");
	out.println("&lt;head&gt;");
	out.println("&lt;title&gt;Primeiro exemplo de um servlet&lt;/title&gt;");
	out.println("&lt;/head&gt;");
	out.println("&lt;body&gt;");
	out.println("&lt;table border='1' width='100%'&gt;");
	out.println("&lt;div align='center'&gt;");
	out.println(	"&lt;table border='1' width='100%' bgcolor='#FF9966'&gt;");
	out.println("&lt;th&gt;");
	out.println("&lt;font face='verdana' size='4'&gt;");
	out.println("Primeiro exemplo de servlet");
	out.println("&lt;/font&gt;");
	out.println("&lt;/th&gt;");
	out.println("&lt;tr&gt;");
	out.println("&lt;td bgcolor='#FFCC99'&gt;");
	out.println("&lt;font face='verdana' size='2'&gt;");
	out.println("O conteúdo deste documento foi gerado pelo servlet</b>ExemploServlet01</b>");
	out.println("&lt;/font&gt;");
	out.println("&lt;/td&gt;");
	out.println("&lt;/tr&gt;");
	out.println("&lt;/table&gt;");
	out.println("&lt;/div&gt;");
	out.println("&lt;/body&gt;");
	out.println("&lt;/html&gt;");
	
	out.close();
}

}

***O que há de errado ???

16 Respostas

J

Oi

JNet, tente seguir o exemplo de Servlet do PJ, é tudo bem explicadinho :slight_smile:

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

T+

J
  • Blz, mas ainda não fechou. Pergunto se há alguma configuração ou algo diferente nesse sentido ?
D

opa…
o erro q ta dando é de página nao localizada?

aproveita e da um look nesse tutorial q o mestre Jeve /* hehehehe…*/ fez q ta tudo passo a passo sobre Servets… :grin:

flw!
abraços!

J
  • Não tá localizando o servlet, é compilado no FORTE da SUN e gerado os arquivos necessários. Estou com muitas dúvidas diante disso. Talvez tenha alguma configuração que desconheça. Alguma sujestão ?
M

te certifica de q a tua aplicação ta toda deployada adequadamente… ele vai executar se tu chamar por

http://localhost:8080/now/ExemploServlet01

isso, se tu tiver uma aplicação de nome “now”, com toda a estrutura de pastas de um modulo web… /WEB-INF/ … /WEB-INF/web.xml… /WEB-INF/classes … WEB-INF/classes/pacote/teuServlet.class …

J
  • No diretório classes tem nomeServlet.jar o nomeServlet.class.
  • Ok, mas “now” é para mim é somente um diretório onde está a WEB-
    -INF, ele deve ser citado no .xml de alguma forma ?
  • E quando se fala em nome da aplicação, isso é o nome do projeto ?
M

por nome da aplicação, eu me refiro ao nome da pasta q tu ta colocando teus códigos em webapps/ no tomcat, por exemplo

webapps/minhaAplicacao/WEB-INF …

J

Não sei o que está dando

  • Refiz tudo assim:

***C:\Apache Tomcat 4.0\webapps\ROOT\ServletApp\Servlet_x

***Acesso no browse
http://localhost:8080/ServletApp/Servlet_x

Como manda, é feito, “mas não acha”.

Diante disso eu pergunto tem que configurar o J2EE em algum lugar ?

Poderia me mandar algum exemplo…

J

Vou fazer o seguinte, partir do zero novamente:

<em><em><em>Servlet:

C:\Apache Tomcat 4.0\webapps\ROOT\ServletApp\WEB-INF\classes\Zxc

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

import javax.servlet.</em>;

import javax.servlet.http.</em>;

public class Zxc extends HttpServlet {

public void doGet(HttpServletRequest solicitacao, HttpServletResponse resposta) throws ServletException, IOException {

	PrintWriter out;
	
	resposta.setContentType("text/html");  
	out = resposta.getWriter();
	
	
	out.println("&lt;html&gt;");
	out.println("&lt;head&gt;");
	out.println("&lt;title&gt;Primeiro exemplo de um servlet&lt;/title&gt;");
	out.println("&lt;/head&gt;");
	out.println("&lt;body&gt;");
	out.println("&lt;table border='1' width='100%'&gt;");
	out.println("&lt;div align='center'&gt;");
	out.println(	"&lt;table border='1' width='100%' bgcolor='#FF9966'&gt;");
	out.println("&lt;th&gt;");
	out.println("&lt;font face='verdana' size='4'&gt;");
	out.println("Primeiro exemplo de servlet");
	out.println("&lt;/font&gt;");
	out.println("&lt;/th&gt;");
	out.println("&lt;tr&gt;");
	out.println("&lt;td bgcolor='#FFCC99'&gt;");
	out.println("&lt;font face='verdana' size='2'&gt;");
	out.println("O conteúdo deste documento foi gerado pelo servlet 	</b>ExemploServlet01</b>");
	out.println("&lt;/font&gt;");
	out.println("&lt;/td&gt;");
	out.println("&lt;/tr&gt;");
	out.println("&lt;/table&gt;");
	out.println("&lt;/div&gt;");
	out.println("&lt;/body&gt;");
	out.println("&lt;/html&gt;");
	
	out.close();
}

}

*** .xml:

<?xml version=“1.0” encoding=“UTF-8”?>

<!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>Zxc</servlet-name>

<servlet-class>Zxc</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Zxc</servlet-name>

<url-pattern>/servlet/Zxc</url-pattern>

</servlet-mapping>

<session-config>

<session-timeout>

30

</session-timeout>

</session-config>

<welcome-file-list>

<welcome-file>

index.jsp

</welcome-file>

<welcome-file>

index.html

</welcome-file>

<welcome-file>

index.htm

</welcome-file>

</welcome-file-list>

</web-app>

***Acesso no browser:
http://localhost:8080/ServletApp/Zxc

*** Por que não acha o Servlet Zxc, pessoal ?

M

tu tem a aplicação ServletApp em webapps/ no tomcat? a estrutura de pastas esta certa? o class do teu servlet esta em /WEB-INF/classes?

J

Blz!

  • Eu tenho o dirertório ServletApp dentro do ROOT que está dentro da webapps no TomCat.
    C:\Apache Tomcat 4.0\webapps\ROOT\ServletApp\WEB-INF

  • Dentro do ServletApp tem o WEB-INF com:
    *O arquivo Zxc.class está dentro de \classes. Conforme me perguntou. E mais os arquivos gerados quando compilados no FORTE da SUN.


*Tenho o diretótorio \lib vazio.


*E o .xml que vimos acima.

Então ?

Obrigado!!!

R

Acho que seu problema é o seguinte: o servlet não é acessado diretamente, mas a partir de um documento .html, que contem um FORM, que gera uma ação POST ou uma ação GET. Dentro do seu servlet, você DEVE ter ou o método doPost (se o seu formulário gerar a ação POST), ou o método doGet (se o seu formulário gerar uma ação GET). Teste os dois, e observe a diferença no endereço na barra de endereço do navegador. Ao ser chamado pelo documento html, aí sim, o servlet executa ser serviço (cadastrar um cliente num banco de dados, por exemplo).[/url]

R

Acho que seu problema é o seguinte: o servlet não é acessado diretamente, mas a partir de um documento .html, que contem um FORM, que gera uma ação POST ou uma ação GET. Dentro do seu servlet, você DEVE ter ou o método doPost (se o seu formulário gerar a ação POST), ou o método doGet (se o seu formulário gerar uma ação GET). Teste os dois, e observe a diferença no endereço na barra de endereço do navegador. Ao ser chamado pelo documento html, aí sim, o servlet executa ser serviço (cadastrar um cliente num banco de dados, por exemplo).

F

Pelo que vi vc está dizendo no web.xml que seu servlet está em pacote.ExemploServlet01 (<servlet-class>) mas o arquivo fisicamente está na pasta classes e o seu servlet não tem nenhuma instrução package.
Ou vc coloca uma instrução package pacote e coloca-o num diretório pacote abaixo de classes ou tira o “pacote.” na tag no servlet-class.

servlet-class informa onde esta a .class do seu servlet respeitando package se houver.

No browser vc roda http://localhost:8080/now/ExemploServlet01 pq pela <url-pattern> vc diz que é /ExemploServlet01 com isto ele verifica <servlet-class>) para encontrar a classe.

Espero ter ajudado

F
Resumindo se vc trocar no web.xml

<servlet-class>pacote.ExemploServlet01</servlet-class>

por

<servlet-class>ExemploServlet01</servlet-class>

deve funcionar

N

Tente assim: http://localhost:8080/now/ExemploServlet01

Nenhum usuário vai ter acesso ao diretório WEB-INF. Não é permitido!!!

T+

Criado 11 de setembro de 2004
Ultima resposta 11 de set. de 2004
Respostas 16
Participantes 7