El servlet no se carga en el navegador

Acabo de empezar a trabajar en servlets y soy un novato. He desarrollado una página html con un menú desplegable desde el cual el usuario puede seleccionar el color de la cerveza y hay un botón de envío que invoca el servlet. Aquí está el código html para ello.

<html>
<head>
<title>Beer Selection</title>
</head>
<body>
<h2>Beer Selection Page</h2>
<p>Select beer charecteristics:</p>
<hr>
<form method="POST" action="SelectBeer.do">
    <b>Color :</b><!--Keeping it outside the form unnecessarily creates a line break between color and Drop-down menu-->
    <select name="color">
        <option>Light</option>
        <option>Brown</option>
        <option>Amber</option>
        <option>Dark</option>
    </select><br>
    <input type="SUBMIT" value="SUBMIT">
</form>
</body>
</html>

He creado el siguiente descriptor de implementación

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>MyBeer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyBeer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>

También he compilado con éxito el servlet BeerSelect.java cuyo código se proporciona a continuación

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);
}
}

Estoy usando tomcat 7.0.21 y he creado los directorios de la siguiente manera: tomcat / webapps / learning / Beer-v1 / form.html y
tomcat / webapps / learning / Beer-v1 / WEB-INF / web.xml y
tomcat / webapps / learning / Beer-v1 / WEB-INF / classes / com / example / web / BeerSelect.class
(el aprendizaje es solo una carpeta en la que guardo todos mis pequeños proyectos de servlet y jsp en webapps Inside learning tengo mi proyecto diferente como Beer-v1, DateDisplay, HotelMgmt, etc.)

Ahora, cuando ejecuto el form.html dentro de Tomcat, se muestra correctamente, pero cuando hago clic en Enviar, se muestra

HTTP Status 404 - /learning/Beer-v1/SelectBeer.do

type Status report

message /learning/Beer-v1/SelectBeer.do

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

¿Qué estoy haciendo mal? Por favor ayuda.

Respuesta 1

Debería funcionar si tiene Beer-v1una subcarpeta directa de la webappcarpeta de Tomcat .
Luego intente acceder a [tomcaturl] / Beer-v1 / [yourhtmlform] .html.

Debido a que asignó su servlet a la raíz de contexto (que es /), no hay asignación para a /learning/Beer-v1/SelectBeer.do.

En mi humilde opinión, no es una muy buena idea tener la estructura de carpetas de su espacio de trabajo dentro de la carpeta de aplicaciones web de Tomcat. Esta es una carpeta especial para aplicaciones web desplegadas, y Tomcat espera un tipo de estructura estándar para esta carpeta (WEB-INF dentro del directorio raíz, por ejemplo).

Creo que es mejor usar Eclipse o algo que implemente su aplicación (desde su sistema de archivos) en Tomcat automáticamente. De esta manera, puede administrar su espacio de trabajo como desee.

Eclipse mantiene un llamado 'espacio de trabajo' donde almacena todos los proyectos que cree con él. La primera vez que inicie Eclipse, le preguntará qué carpeta usar como espacio de trabajo. Entonces podría nombrar su carpeta de 'aprendizaje' a medida que la usa en este momento.

Cuando agrega un entorno de ejecución de servidor a Eclipse (por ejemplo, una instalación de Tomcat), puede configurar cómo se implementa Eclipse. La configuración predeterminada es copiar la aplicación web en una subcarpeta de espacio de trabajo específica de Eclipse.

Respuesta: 2

Quiero poder formatear el precio doble en un formato específico de la localidad. Puede lograr esto utilizando el siguiente código: NumberFormat.getCurrencyInstance (locale) .format (20.0); Sin embargo, solo 21 locales ...

En mi aplicación, tengo el siguiente código en mi actividad captureBonus (que también es donde vive ImageView): // Procesar la imagen de muestra bonusSampleImage = findViewById (R.id.bonusSampleImage); Deslizamiento....

Acabo de instalar jdk1.7.0_07 y de repente me inundan muchas advertencias sobre los tipos genéricos sin formato. (Recibo cientos de ellos y ofuscan otras advertencias posiblemente significativas).

Estaba atrapado en una situación en la que tengo que hacer pares de palabras a partir de una cadena de línea usando StringTokenzier. Pero no estoy seguro de cómo esa clase me puede dar esa funcionalidad. Ejemplo: Entrada: "EE.UU. ...