2012-09-12 138 views
0

我正在測試一個演示servlet文件但是,該servlet似乎沒有迴應。我無法理解這個問題。無法編譯servlet文件。

當我點擊提交的HTML表單的URL是 本地主機:8080 /啤酒-V1/SelectBeer.do

但是,它不應該是/ BeerSelect?由於@WebServlet(「/ BeerSelect」)???

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="false" 
version="3.0"> 

<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.do</url-pattern> 
</servlet-mapping> 
</web-app> 

BeerSelect.java

package com.example.web; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/BeerSelect") 
public class BeerSelect extends HttpServlet { 
private static final long serialVersionUID = 1L; 

public BeerSelect() { 
    super(); 
} 

@Override 
protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

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

} 

}

回答

1

當我點擊提交的HTML表單的URL爲localhost:8080/Beer-V1/SelectBeer.do

但是,它不應該是/ BeerSelect?由於@WebServlet(「/ BeerSelect」)???

  1. Web容器同夥「上下文路徑」爲每個部署的web應用,並在你的情況,我相信這是「啤酒-V1」。

  2. 您已經覆蓋web.xml中的映射如下,因此你看到*。做

    <servlet-mapping> 
        <servlet-name>CH3 Beer</servlet-name> 
        <url-pattern>/SelectBeer.do</url-pattern> 
    </servlet-mapping> 
    

的XML DD覆蓋註解。

+0

所以我要將BeerSelect更改爲/SelectBeer.do?並保留@WebServlet(「/ BeerSelect」)? – AppSensei

+2

@RonyJohn刪除web.xml並使用註釋或其他方式 –

+0

好的,我可以在這裏做任何更改嗎?

。我刪除了web.xml並保留了註釋。 – AppSensei