无法编译servlet文件。

问题描述:

我正在测试一个演示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); 

} 

}

当我点击提交的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