Problemas com o Exemplo do Livro Use a cabeça Servlet & JSP

Estou lendo o livro Servlet & JSP da série Usea a Cabeça e estou tendo problemas no exemplo do capítulo 3. Segui os exemplos como o livro pede porém a mensagem abaixo é apresentada quando uso o botão do formulario(form.html) pra chamar a servlet (BeerSelect)

HTTP Status 404 - /web/SelectBeer.do

type Status report

message /web/SelectBeer.do

description The requested resource (/web/SelectBeer.do) is not available.
Apache Tomcat/6.0.20

Minha Estrutura do Tomcat é:
C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\Beer-v1\WEB-INF\Web.xml
C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\Beer-v1\form.html
C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\Beer-v1\WEB-INF\classes\com\example\web\BeerSelect.class

Meu XML está abaixo.

<?xml version="1.0" encoding="UTF-8"?> Ch3 Beer BeerSelect Ch3 Beer /SelectBeer.do

Eu ainda não consegui enxergar onde está o erro.
Se alguém aí puder ajudar…agradeço.

Um abraço.

Bom, este erro acontece quando o tomcat não encontra no xml sua servlet, acredito que no action do seu form voce deve ter esquecido a “/” ou escrito de forma errada na url… outra pegunta voce compilou a servlet?

posta o o form ai…

O Action estava sem a “/” sim, mas mesmo a colocando não funcionou.

Beer Selection

Select Beer characteristics

Color: Light Amber Brown Dark 1

Atualizei também o xml para a linha abaixo:

com.example.web.BeerSelect

Por favor galerinha usem a tag CODE …
olha soh simples basta olhar no link

http://www.guj.com.br/posts/list/50115.java

Vc tem que usar o nome completamente qualificado (fully qualified name) em servlet-class:

<servlet> 
    <servlet-name>Ch3 Beer</servlet-name> 
    <servlet-class>com.example.web.BeerSelect</servlet-class> 
</servlet> 

Já estou usando fully qualified name da servlet. Atualizei o web.xml mas não funcionou. Os códigos estão de acordo com as soluções citadas.

Posta o seu servlet ae.

<?xml version="1.0" encoding="utf-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Ch3 Beer</servlet-name> <servlet-class>com.example.web.BeerSelect</servlet-class> </servlet> <servlet-mapping> <servlet-name>Ch3 Beer</servlet-name> <url-pattern>/SelectBeer</url-pattern> </servlet-mapping> </web-app>

Por algum motivo não está funcionado com a estrutura de pastas “com.example.web”. Quando uso meu .class direto na pasta do projeto, funciona !

Tá Resolvido.

Segui o livro e então criei a estrutura de pastas com\example\web na mão abaixo dos diretórios WEB-INF\classes no tomcat. Não estava encontrando a servlet.

O que eu fiz e resolveu foi apagar a estrutura com\example\web do tomcat que fiz na mão e deixar que essa mesma estrutura fosse criada com a compilação do meu .java, já que defini dentro dele a package com o mesmo endereço. Então a estrutura foi criada e funcionou.

Obrigado pelas ajudas e fica ai uma dica se alguém precisar dela.

Estou seguindo o memso livro e estou tendo problema para compilar o servlet.

quando eu compilo aparece os seguintes erros:

C:\Documents and Settings\Paschoal\Meus documentos\JSP\MyProjects\BeerV1>javac -
classpath “/arquivo de programas/apache software foundation/tomcat 6.0/lib/servl
et-api.jar”:classes:. -d classes src/com/example/web/BeerSelect.java
src\com\example\web\BeerSelect.java:3: package javax.servlet does not exist
import javax.servlet.*;
^
src\com\example\web\BeerSelect.java:4: package javax.servlet.http does not exist

import javax.servlet.http.*;
^
src\com\example\web\BeerSelect.java:7: cannot find symbol
symbol: class HttpServlet
public class BeerSelect extends HttpServlet
^
src\com\example\web\BeerSelect.java:10: cannot find symbol
symbol : class HttpServletRequest
location: class com.example.web.BeerSelect
public void doPost(HttpServletRequest request,
^
src\com\example\web\BeerSelect.java:11: cannot find symbol
symbol : class HttpServletResponse
location: class com.example.web.BeerSelect
HttpServletResponse response)
^
src\com\example\web\BeerSelect.java:13: cannot find symbol
symbol : class ServletException
location: class com.example.web.BeerSelect
throws IOException, ServletException
^
6 errors

Alguem poderia me ajudar a resolver esse problema?

Att

Posta tua CLASSPATH !!

.

.;JAVA_HOME ; C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;.

Já vou aproveitar e vou enviar os locais onde estãos os Arquivoos .java e a estrutura dos ambientes.

Arquivo .java (servlet)
C:\Documents and Settings\Paschoal\Meus documentos\JSP\MyProjects\BeerV1\src\com\example\web

Arquivo .HTML
C:\Documents and Settings\Paschoal\Meus documentos\JSP\MyProjects\BeerV1\web; e
C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\Beer-v1

Arquivo .XML
C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\webapps\Beer-v1\WEB-INF; e
C:\Documents and Settings\Paschoal\Meus documentos\JSP\MyProjects\BeerV1\etc

As estruturas que montei ou foram configuradas pelo .exe do Tomcat foram:

C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\

bin\ (varios arquivos)

conf\catalina\localhost\ (varios arquivos)

lib\ (varios Arquivos) (servlet-api.jar está aki)

logs\ (varios Arquivos)

temp\ (varios Arquivos)

webapps\Beer-v1\WEB-INF\

…classes\com\example\ (vazio)
…model\ (vazio)
…web\ (vazio)
…lib\ (vazio)

work\Catalina\localhost\ (varios Arquivos)

C:\Documents and Settings\Paschoal\Meus documentos\JSP\MyProjects\BeerV1

classes\ (vazio)

etc\ web.xml

lib\ (vazio)

src\com\example
…model\ (vazio)
…web\ BeerSelect.java

web\ form.html

Os codigo do meu web.xml é:

<servlet> Ch3 Beer
`com.example.web.BerrSelect

Ch3 Beer `/SelectBeer.do

e o codigo do meu form.html é:

Beer Selection Page

Selecione as Caracteris da Cerveja

Cor: clara amber marron escura

Bem…agora acho que postei tudo que já modifiquei ou criei até agora…

Alguem consegue me Ajudar?

Att

Galera Fleliz 2010 para todos

resolvi o problema dos erros postado anteriormente,

Mas agora está dando o seguinte erro quando tento compilar o java

Microsoft Windows XP [versão 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\MyProjects\BeerV1>javac -classpatch C:\Tomcat\common\lib\servlet-api.jar:clas
ses:. -d classes src\com\example\web\BeerSelect.java
javac: invalid flag: -classpatch
Usage: javac
use -help for a list of possible options

Alguem sabe o que isso significa?

Att,

[quote=riczanca89]Galera Fleliz 2010 para todos

resolvi o problema dos erros postado anteriormente,

Mas agora está dando o seguinte erro quando tento compilar o java

Microsoft Windows XP [versão 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\MyProjects\BeerV1>javac -classpatch C:\Tomcat\common\lib\servlet-api.jar:clas
ses:. -d classes src\com\example\web\BeerSelect.java
javac: invalid flag: -classpatch
Usage: javac
use -help for a list of possible options

Alguem sabe o que isso significa?

Att,

[/quote]
O problema é que tem um ‘c’ a mais: é classpath e não classpatch.

Percebi o erro tbm marco, agora voltei par ao mesmo problema que estava tendo

Quando mando compilar aparece os seguintes erros

C:\MyProjects\BeerV1>javac -classpath C:\Tomcat\common\lib\servlet-api.jar:class
es:. -d classes src\com\example\web\BeerSelect.java
src\com\example\web\BeerSelect.java:3: package javax.servlet does not exist
import javax.servlet.*;
^
src\com\example\web\BeerSelect.java:4: package javax.servlet.http does not exist

import javax.servlet.http.*;
^
src\com\example\web\BeerSelect.java:7: cannot find symbol
symbol: class HttpServlet
public class BeerSelect extends HttpServlet {
^
src\com\example\web\BeerSelect.java:9: cannot find symbol
symbol : class HttpServletRequest
location: class com.example.web.BeerSelect
public void doPost(HttpServletRequest request,
^
src\com\example\web\BeerSelect.java:10: cannot find symbol
symbol : class HttpServletResponse
location: class com.example.web.BeerSelect
HttpServletResponse response)
^
src\com\example\web\BeerSelect.java:12: cannot find symbol
symbol : class ServletException
location: class com.example.web.BeerSelect
throws IOException, ServletException
^
6 errors

C:\MyProjects\BeerV1>

Saberia me dizer? quais as variaveis de ambiente que preciso configurar?

Espera um pouco… o separador de diretórios no Windows é o ‘ponto e vírgula’ o não o ‘dois pontos’. Tenta executar:

Consegui diminuir para apenas um erro:

Olha como ficou:

C:\MyProjectszBeerV1>javac -classpath c:\tomcat\common\lib\servlet-api.jar;classes;. -d classes src\com\example\web\beerselect.java
scr\com\example\web\beerselect.java:15: cannot find symbol
symbol : method getWrite()
location: interface javax.servlet.http.HttpServletResponse
PrintWriter out = response.getWrite();
^

1 Error

[quote=riczanca89]Consegui diminuir para apenas um erro:

Olha como ficou:

C:\MyProjectszBeerV1>javac -classpath c:\tomcat\common\lib\servlet-api.jar;classes;. -d classes src\com\example\web\beerselect.java
scr\com\example\web\beerselect.java:15: cannot find symbol
symbol : method getWrite()
location: interface javax.servlet.http.HttpServletResponse
PrintWriter out = response.getWrite();
^

1 Error

[/quote]

Cuidado com a sintaxe… o certo é:

 PrintWriter out = response.getWriter();