有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Servlet不适用于Tomcat 6.0.37

我有一个具有以下结构的开发文件夹:

G:\MyProjects\beerV1--
                      |___classes\com\examples\web\BeerSelect.class
                      |_______src\com\examples\web\BeerSelect.java
                      |_____etc\web.xml
                      |_____web\form.html

我的部署文件夹层次结构是:

C:\Tomcat6\apache-tomcat-6.0.37\webapps\Beer-v1
                                        ---WEB-INF\classes\com\examples\web\BeerSelect.class
                                        ---form.html
                                        ---WEB-INF\web.xml

当我运行http://localhost:8080/时,我可以看到默认的tomcat页面。 但是,我无法使用http://localhost:8080/Beer-v1/form.html(获取404 error)查看表单页面

我是不是遗漏了什么

{}是:

package com.examples.web;

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

public class BeerSelect extends HttpServlet {

    public void doHost(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);
    }
}

我的web.xml是:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Ch3Beer</servlet-name>
    <servlet-class>com.examples.web.BeerSelect</servlet-class>
</servlet>    

<servlet-mapping>
    <servlet-name>Ch3Beer</servlet-name>
    <servlet-class>/SelectBeer.do</servlet-class>
</servlet-mapping>

</web-app>

我的{}是:

<html>
    <!--Some sample HTML-->
    <head>
        <title>The english pub</title>
    </head>
    <body>
        <h1 align="center">Beer Selection 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>
                </select>
                <br><br>

            <center><input type="SUBMIT"</center>
        </form>
    </body>
</html>

共 (2) 个答案

  1. # 1 楼答案

    HttpServlet中是否有名为doHost()的方法?我认为你的doHost()应该改为doPost(),就像你在html中的操作所说的那样发布请求

    HTML:

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

    Servlet:

    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);
        }
    }
    
  2. # 2 楼答案

    找到了更多:

    在网上。xml:

    <servlet-class>/SelectBeer.do</servlet-class>
    

    应改为:

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

    这就解决了问题

    愚蠢的错误

    无论如何,谢谢你帮我调查这个问题

    干杯