2014-01-23 71 views
0

我有以下結構的發展文件夾:的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 

當我運行​​,我可以看到默認的tomcat頁面。 但是我無法使用http://localhost:8080/Beer-v1/form.html(變得404 error

我在這裏丟失了什麼嗎?

BeerSelect.java是:

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> 

和我form.html是:

<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> 

回答

1

我們有一個名爲doHost()HttpServlet中的方法?我認爲您的doHost()應該更改爲doPost(),因爲您在html中的操作表示POST請求。

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

嗨svjn對不起,錯字和thx爲您的答覆。我糾正並重新編譯和替換該.class文件到處仍然面臨的問題。 – Deep

+0

在該方法上添加'@ Override'來捕獲這些類型的拼寫錯誤。這幾乎是註釋的目的。 – pickypg

0

找到更多的東西:

在web.xml

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

應改爲:

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

而這解決了這個問題。

愚蠢的錯誤。

無論如何感謝您爲我尋找問題。

乾杯!