Java 在web.xml.DD中添加新servlet时,Tomcat7拒绝在Eclipse上启动
在开发JavaEE应用程序(学校练习)时,一切似乎都正常工作。但是,由于我在eclipse项目中添加了一个新的servlet,我的tomcat拒绝启动,重启过程也没有时间了。即使延长完成服务器操作的时间限制也无济于事 这个问题似乎是由我的web.xml文件引起的,因为当我删除标记时,一切都像钟表一样运转。 虽然我可以通过右键单击servlet来启动它,但这不是目的。 我需要这个web.xml来使用带有URL模式的jsp调用我的servlet 日志仅显示服务器准备启动,但未显示任何错误 那里 如果你不介意看一看的话,这是我给你带来麻烦的代码。 我的web.xml中填充了与此完全相同的内容,并且没有任何内容阻止tomcat正确启动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 日志仅显示服务器准备启动,但未显示任何错误 那里 如果
<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>