[英]Server Tomcat v8.5 Server at localhost failed to start Eclipse due to web.xml or servlet.java
[英]Tomcat 7 server failed to start after creating a servlet using eclipse
當我嘗試在Eclipse中啟動本地Tomcat 7服務器時出現錯誤:
'在localhost啟動Tomcat v7.0服務器'遇到了問題。 localhost上的服務器Tomcat v7.0服務器無法啟動。
這些是我采取的步驟:
創建一個名為“Testservlet”的新servlet
。
包名:testpackage
servlet-api.jar
。 這是Eclipse中的路徑結構:
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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Testservlet</servlet-name>
<servlet-class>testpackage.Testservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Testservlet</servlet-name>
<url-pattern>/Testservlet</url-pattern>
</servlet-mapping>
</web-app>
Testservlet.java
文件的內容:
package testpackage;
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(description = "a test servlet", urlPatterns = { "/Testservlet" })
public class Testservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.println("This is a test servlet");
}
}
接下來,我將項目添加到Tomcat服務器並嘗試啟動服務器。 這是當我得到錯誤停止服務器運行時。
如果我從web.xml文件中刪除與servlet相關的標記,則服務器啟動完全正常。 這是我刪除的標記:
<servlet>
<servlet-name>Testservlet</servlet-name>
<servlet-class>testpackage.Testservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Testservlet</servlet-name>
<url-pattern>/Testservlet</url-pattern>
</servlet-mapping>
我假設我需要在web.xml中使用上面的標記,以便在我導航到test / Testservlet時顯示servlet? 特別是當我將項目部署到遠程服務器時。
我在這做錯了什么?
Servlet API 3.0包含一個名為javax.servlet.annotation
的新包,它提供了@WebServlet
類的注釋,用於注釋servlet類,這可以消除web.xml
中servlet配置的使用 。 因此, servlet
和servlet-mapping
已經過時了。
此外,您不應該將servlet-api.jar
與您的應用程序一起部署。 Tomcat 7已經有了這些類,它支持許多Servlet API。 它將使用您的Web應用程序部署描述符自動選擇要加載的servlet API。
最佳解決方案是在創建servlet時添加服務器運行時1.在創建sevelet名稱時添加服務器運行時2.添加指定的tomcat安裝位置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.