代码之家  ›  专栏  ›  技术社区  ›  AppSensei

无法编译servlet文件。

  •  0
  • AppSensei  · 技术社区  · 13 年前

    我正在测试一个servlet演示文件,但是servlet似乎没有响应。我不能理解这个问题。

    当我点击HTML表单上的提交时,URL是 本地主机:8080/蜂鸣器-V1/SelectBeer.do

    但是,不应该是/BeerSelect吗?因为@WebServlet(“/BeerSelect”)???

    网页.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>
    

    蜜蜂选择.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 回复  |  直到 13 年前
        1
  •  1
  •   BalusC    13 年前

    当我在HTML表单上单击提交时,URL是localhost:8080/Beer-V1/SelectBeer.do

    但是,不应该是/BeerSelect吗?因为@WebServlet(“/BeerSelect”)???

    1. web容器为部署的每个web应用程序关联一个“上下文路径”,在您的情况下,我相信它是“Beer-V1”。

    2. 您已经覆盖了web.xml中的映射,如下所示,因此您看到*.do

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

    xml DD覆盖注释。