Java 在web.xml.DD中添加新servlet时,Tomcat7拒绝在Eclipse上启动

Java 在web.xml.DD中添加新servlet时,Tomcat7拒绝在Eclipse上启动,java,jakarta-ee,tomcat7,deployment-descriptor,Java,Jakarta Ee,Tomcat7,Deployment Descriptor,在开发JavaEE应用程序(学校练习)时,一切似乎都正常工作。但是,由于我在eclipse项目中添加了一个新的servlet,我的tomcat拒绝启动,重启过程也没有时间了。即使延长完成服务器操作的时间限制也无济于事 这个问题似乎是由我的web.xml文件引起的,因为当我删除标记时,一切都像钟表一样运转。 虽然我可以通过右键单击servlet来启动它,但这不是目的。 我需要这个web.xml来使用带有URL模式的jsp调用我的servlet 日志仅显示服务器准备启动,但未显示任何错误 那里 如果

在开发JavaEE应用程序(学校练习)时,一切似乎都正常工作。但是,由于我在eclipse项目中添加了一个新的servlet,我的tomcat拒绝启动,重启过程也没有时间了。即使延长完成服务器操作的时间限制也无济于事

这个问题似乎是由我的web.xml文件引起的,因为当我删除标记时,一切都像钟表一样运转。 虽然我可以通过右键单击servlet来启动它,但这不是目的。 我需要这个web.xml来使用带有URL模式的jsp调用我的servlet

日志仅显示服务器准备启动,但未显示任何错误 那里 如果你不介意看一看的话,这是我给你带来麻烦的代码。 我的web.xml中填充了与此完全相同的内容,并且没有任何内容阻止tomcat正确启动

<servlet>
    <servlet-name>BookYourFlightServlet</servlet-name>
    <servlet-class>com.sdzee.servlets.BookYourFlightServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BookYourFlightServlet</servlet-name>
    <url-pattern>/bookYourFlightServlet</url-pattern>
  </servlet-mapping>
我的Servlet:

package com.sdzee.servlets;

import java.io.IOException;
import com.sdzee.beans.ReservationBean;
import com.sdzee.dao.DAOFactory;
import com.sdzee.dao.UtilisateurDao;
import com.sdzee.forms.BookFlightForm;

@WebServlet("/bookFlightServlet")
public class BookFlightServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String VIEW = "/WEB-INF/JSP/bookYourFlight.jsp";

    public static final String ATT_BOOKING = "booking";
    public static final String ATT_FORM = "form";
    public static final String CONF_DAO_FACTORY = "daofactory";

    private UtilisateurDao utilisateurDao;

    // ========================================================================
    public void init() throws ServletException {
        /* Récupération d'une instance de notre DAO Utilisateur */
        this.utilisateurDao = ((DAOFactory) getServletContext().getAttribute(
                CONF_DAO_FACTORY)).getUtilisateurDao();
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        /* Affichage de la page d'inscription */
        this.getServletContext().getRequestDispatcher(VIEW)
                .forward(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        BookFlightForm form = new BookFlightForm(utilisateurDao);
        /* Traitement de la requête et récupération du bean en résultant */

        ReservationBean reservationBean = form.registerFlightMethod(request);

        request.setAttribute(ATT_FORM, form);
        request.setAttribute(ATT_BOOKING, reservationBean);

        this.getServletContext().getRequestDispatcher(VIEW)
                .forward(request, response);
        System.out.println("Dopost method");

    }

}
我的Jsp文件

<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Book Flight</title>
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
        <link type="text/css" rel="stylesheet" href="styles/form.css" />
    </head>
    <body>
        <form method="post" action="bookFlightServlet">
            <fieldset>
                <legend>Reservation</legend>
                <p>You can book your flight with this form.</p>

            <label for="country">Country <span class="requis">*</span></label>
                <input type="text" id="country" name="country" value="<c:out value="${reservationBean.country}"/>" size="20" maxlength="60" />
                <span class="erreur">${form.erreurs['country']}</span>
                <br />

                <label for="departureDay">Departure Date <span class="requis">*</span></label>
                <input type="text" id="departureDay" name="departureDay" value="<c:out value="${reservationBean.departureDay}"/>" size="20" maxlength="60" />
                <span class="erreur">${form.erreurs['departureDay']}</span>
                <br />


                <input type="submit" value="BOOK" class="sansLabel" />
                <br />
            <p class="${empty form.erreurs ? 'succes' : 'erreur'}">${form.resultat}</p>
            </fieldset>
        </form>
    </body>
</html>

预订航班
预订
你可以用这张表格预订航班

国家* ${form.erreurs['country']}
出发日期* ${form.erreurs['departureDay']}

${form.resultat}

Web.xml文件

<servlet>
    <servlet-name>BookFlightServlet</servlet-name>
    <servlet-class>com.sdzee.servlets.BookFlightServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BookFlightServlet</servlet-name>
    <url-pattern>/bookFlightServlet</url-pattern>
  </servlet-mapping>

BookFlightServlet
com.sdzee.servlets.BookFlightServlet
BookFlightServlet
/bookFlightServlet

由于此异常,启动失败

名为[BookFlightServlet]和[com.sdzee.servlets.BookFlightServlet]的servlet都映射到不允许的url模式[/BookFlightServlet]

无法使用2个servlet处理HTTP请求。为servlet名称标记使用唯一的名称,并将URL模式映射到单独的servlet类。您不能这样做的原因是,无法同时跨2个servlet线程有意义地提交HTTP响应


有人犯了类似的错误。您也可以从中学习。

我认为您两次声明Servlet com.sdzee.servlets.BookFlightServlet。
通过将相同的servlet(具有不同的名称:一个有其包,另一个没有)映射到相同的url apptern,容器将无法启动,因为这是不允许的

显示启动日志。向我们显示catalina.out和localhost日志。好了,现在开始工作了。我不知道有多长时间,但它有效。我已经更改了Servlet名称一段时间,并且它运行了。不知道。对这一切感到抱歉。感谢您的时间,因为:
原因:java.lang.IllegalArgumentException:servlet名为[BookFlightServlet]和[com.sdzee.servlets.BookFlightServlet]都映射到url模式[/BookFlightServlet],这是不允许的
对不起,我该怎么办?我的所有servlet在my web.xml中都具有相同的配置
<servlet>
    <servlet-name>BookFlightServlet</servlet-name>
    <servlet-class>com.sdzee.servlets.BookFlightServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BookFlightServlet</servlet-name>
    <url-pattern>/bookFlightServlet</url-pattern>
  </servlet-mapping>