簡體   English   中英

使用eclipse創建servlet后,Tomcat 7服務器無法啟動

[英]Tomcat 7 server failed to start after creating a servlet using eclipse

當我嘗試在Eclipse中啟動本地Tomcat 7服務器時出現錯誤:

'在localhost啟動Tomcat v7.0服務器'遇到了問題。 localhost上的服務器Tomcat v7.0服務器無法啟動。

這些是我采取的步驟:

  1. 創建一個名為“test”的新項目。
  2. 創建一個新的index.jsp文件。
  3. 創建一個名為“Testservlet”的新servlet

    包名:testpackage

  4. 為Web App庫配置新的構建路徑。 從Tomcat 7目錄添加外部JAR我添加了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配置的使用 因此, servletservlet-mapping已經過時了。

此外,您不應該將servlet-api.jar與您的應用程序一起部署。 Tomcat 7已經有了這些類,它支持許多Servlet API。 它將使用您的Web應用程序部署描述符自動選擇要加載的servlet API。

最佳解決方案是在創建servlet時添加服務器運行時1.在創建sevelet名稱時添加服務器運行時2.添加指定的tomcat安裝位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM