(Iniciante - servlet simples) Servlet não encontrado. Livro Kathy SCWCD, capitulo 3

3 respostas
J

Pessoal, o http status 404 está ocorrendo em um código de exemplo do livro da Kathy Sierra da certificação SCWCD, início do capítulo 3.
Uso o Tomcat. Apenas instalei o .exe, sem fazer qualquer configuração nele (somente configurei as variáveis de ambiente do windows CLASSPATH e TOMCAT_HOME).
Problema:
São 3 arquivos: form.html, web.xml, BeerSelect.class (este está no pacote com.example.web).
Na pasta "webapps" está a pasta da minha aplicação: "Beer-v1". Nesta se encontra o arquivo "form.html" e a pasta "WEB-INF". Na pasta "WEB-INF" há o arquivo "web.xml" e a pasta "classes". Na pasta "classes" está o arquivo "BeerSelect.class" com toda a estrutura de diretório necessária para fazer jus ao package.
Com o Tomcat iniciado, coloco no browser: "http://localhost:8080/Beer-v1/form.html". Tudo OK, abre a página normal. Daí quando clico em "Enviar Dados", surge uma nova página comunicando:
"HTTP Status 404 - /Beer-v1/SelectBeer.do

type Status report

message /Beer-v1/SelectBeer.do

description The requested resource (/Beer-v1/SelectBeer.do) is not available.
Apache Tomcat/6.0.32"

Os códigos: -form.html:
<html>
<body>
<h1 align="center">Beer Solution Page</h1>
<form method="POST"
	action="SelectBeer.do">
	Select beer characteristics<p>
	Color:
	<select name="color" size="1">
		<option value="light">light</option>
		<option value="amber">amber</option>
		<option value="brown">brown</option>
		<option value="dark">dark</option>
	</select>
	<br><br>
	<center>
		<input type="SUBMIT">
	</center>
</form></body></html>
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.orh/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>/BeerSelect.do</url-pattern>
</servlet-mapping>
</web-app>
SelectBeer.java:
package com.example.web;

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

public class BeerSelect extends HttpServlet{
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("Beer Selection Advice<br>");
		String c = request.getParameter("color");
		out.println("<br>Got beer color: " + c);
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
		doPost(request, response);
	}
}
Agradeço muito quem vier ajudar, pois quero seguir em frente no livro e não me sinto confortável em seguir enquanto não estiver com isso resolvido.

3 Respostas

andreiribas

Olá amigo,

no DD, seu servlet está configurado como:

<url-pattern>/BeerSelect.do</url-pattern>

mas no form você chama ele como SelectBeer.do:

<form method="POST" action="SelectBeer.do">

Você deve mudar para o mesmo url-pattern que está no DD, ou seja:

<form method="POST" action="BeerSelect.do">

J

Que cegada!! heuaeheaueah
Valeu andreiribas.

J

Acho que o moderador/adminsitrador pode apagar esse tópico de tão simples que foi.

Criado 28 de abril de 2011
Ultima resposta 28 de abr. de 2011
Respostas 3
Participantes 2