2013-03-03 52 views
1

我在eclipse中運行tomcat 7 ... 當我運行我的html調用servlet來執行簡單的計算時出現以下錯誤..錯誤是HTTP狀態404錯誤或web.xml錯誤不知道

HTTP Status 404 - /TestTomcat/ 
-------------------------------------------------------------------------------- 

type Status report 
message /TestTomcat/ 
description The requested resource is not available. 

-------------------------------------------------------------------------------- 
Apache Tomcat/7.0.37 

我的html文件是

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <form method="post" action="http://localhost:8080/TestTomcat/"> 
     What's your name <br /> 
     <input name="yourname" value="Test"/><br /> 

     First number <br /> 
     <input name="firstnum" value="3" /><br /> 

     Second number<br /> 
     <input name="secondnum" value="5"/><br /> 

     <input type="hidden" name="Language" value="English" /> 

     <input type="submit" /> 

    </form> 
</body> 
</html> 

的servlet是

package helloServlets; 

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("/TestTomcat") 
public class TestTomcat extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

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

     String usersName = request.getParameter("yourname"); 

     String theLang = request.getParameter("Language"); 

     int firstNum = Integer.parseInt(request.getParameter("firstnum")); 
     int secondNum = Integer.parseInt(request.getParameter("secondnum")); 
     int sumONum = firstNum + secondNum; 
     response.setContentType("text/html"); 

     PrintWriter output = response.getWriter(); 

     output.println("<html><body><h3>Hello " + usersName); 

     output.println("</h3><br />" + firstNum + " + " + secondNum); 
     output.println(" = " + sumONum + "<br />Speaks " + theLang + "</body></html>"); 
    } 

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

} 

的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" 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" id="WebApp_ID" version="3.0"> 
    <display-name>Student_database</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 


    <servlet> 
     <servlet-name>TestTomcat</servlet-name> 
     <servlet-class>helloServlets.TestTomcat</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>TestTomcat</servlet-name> 
     <url-pattern>/TestTomcat</url-pattern> 
    </servlet-mapping> 
</web-app> 

請幫助我,我是一個絕對的初學者....感謝

..

是的,如果我使用的是已被「Raunak阿加瓦爾」提供了以下解決方案並啓動我的服務器然後我得到了以下錯誤

我之前做了,但是當我開始我的服務器得到以下錯誤

Mar 03, 2013 9:56:29 AM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Java\jdk1.7.0_15\bin;C:\Program Files\eclipse;;. 
Mar 03, 2013 9:56:29 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TomcatTest' did not find a matching property. 
Mar 03, 2013 9:56:29 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Mar 03, 2013 9:56:29 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Mar 03, 2013 9:56:29 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 502 ms 
Mar 03, 2013 9:56:29 AM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Mar 03, 2013 9:56:29 AM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.37 
Mar 03, 2013 9:56:30 AM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TomcatTest]] 
    at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source) 
    at java.util.concurrent.FutureTask.get(Unknown Source) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TomcatTest]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    ... 7 more 
Caused by: java.lang.IllegalArgumentException: The servlets named [TestTomcat] and [helloServlets.TestTomcat] are both mapped to the url-pattern [/TestTomcat] which is not permitted 
    at org.apache.catalina.deploy.WebXml.addServletMapping(WebXml.java:335) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2412) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2125) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2080) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2073) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1300) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 

Mar 03, 2013 9:56:30 AM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source) 
    at java.util.concurrent.FutureTask.get(Unknown Source) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:684) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 

Mar 03, 2013 9:56:30 AM org.apache.catalina.startup.Catalina start 
SEVERE: Catalina.start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:684) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 9 more 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 11 more 

Mar 03, 2013 9:56:30 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 490 ms 
+1

你申請後什麼@Raunak說提供完整的'web.xml'。 看完你的statck跟蹤後,問題似乎是你有兩個servlet映射到相同的url模式 – kaysush 2013-03-03 10:09:57

回答

2

嘗試改變註釋@WebServlet(name = "TestTomcat", urlPatterns = {"/TestTomcat"})web.xml刪除任何servlet映射。我希望它能工作。

1

首先,嘗試將您的表單操作更改爲TestTomcat

因爲您使用的是註釋,所以在web.xml中不需要下面的代碼。因此,將其刪除

<servlet> 
     <servlet-name>TestTomcat</servlet-name> 
     <servlet-class>helloServlets.TestTomcat</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>TestTomcat</servlet-name> 
     <url-pattern>/TestTomcat</url-pattern> 
    </servlet-mapping> 
+0

我做過之前,但當我啓動服務器時,我得到以下錯誤 – Amjad 2013-03-03 09:57:25

+0

當我更改我的web.xml文件代碼到您的代碼,我的tomcat劑量開始...因爲我編輯了我的問題,你可以看到錯誤...我現在應該做什麼....我也改變了行動TestTomcat – Amjad 2013-03-03 10:03:41

1

的情況下似乎是/TomcatTest和你映射的servlet來/TestTomcat所以要訪問它,你應該提供以下網址

http://localhost:8080/TestTomcat/TestTomcat