2011-11-23 18 views
1

我有以下的servlet編碼中/src/main/java/examples/web/SimpleServlet.java的Maven插件碼頭 - Servlet是不工作

package examples.web; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class SimpleServlet extends HttpServlet { 
    public void goGet(HttpServletRequest req, HttpServletResponse res) throws IOException { 
     PrintWriter writer = res.getWriter(); 
     writer.println("SimpleServlet Executed!"); 
     writer.flush(); 
     writer.close(); 
    } 
} 

而且在src/main/webapp/WEB-INF/web.xml定義了以下的web.xml:

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>SimpleServlet</servlet-name> 
    <servlet-class>examples.web.SimpleServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>SimpleServlet</servlet-name> 
    <url-pattern>/simpleservlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

而下面的POM。 xml中定義的/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>examples.web</groupId> 
    <artifactId>simple-webapp</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>simple-webapp Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>simple-webapp</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>maven-jetty-plugin</artifactId> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

當我運行mvn jetty:run我得到的輸出表明一切正常。當我加載localhost:8080/simple-webapp我服務src/main/webapp/index.jsp,所以我知道碼頭是至少部分工作。

而現在的問題是:雖然我走不到index.jsp,我不能去/simple-webapp/SimpleServlet - 我剛剛從碼頭得到一個404錯誤。由於我的配置web.xml,我期待從SimpleServlet看到SimpleServlet Executed!。我究竟做錯了什麼?

下面是相關輸出從mvn jetty:run

[INFO] Configuring Jetty for project: simple-webapp Maven Webapp 
[INFO] Webapp source directory = C:\Users\Ken\Workspace\Eclipse\Maven\simple-webapp\src\main\webapp 
[INFO] Reload Mechanic: automatic 
[INFO] Classes = C:\Users\Ken\Workspace\Eclipse\Maven\simple-webapp\target\classes 
2011-11-23 16:59:56.220:INFO::Logging to STDERR via org.mortbay.log.StdErrLog 
[INFO] Context path = /simple-webapp 
[INFO] Tmp directory = determined at runtime 
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml 
[INFO] Web overrides = none 
[INFO] web.xml file = C:\Users\Ken\Workspace\Eclipse\Maven\simple-webapp\src\main\webapp\WEB-INF\web.xml 
[INFO] Webapp directory = C:\Users\Ken\Workspace\Eclipse\Maven\simple-webapp\src\main\webapp 

回答

1

的網址是大小寫敏感的。定義的URL模式不匹配您所請求的值:

<url-pattern>/simpleservlet</url-pattern> 

嘗試http://localhost:8080/simple-webapp/simpleservlet(小寫se​​rvlet名稱)。

+0

當我這樣做時,我得到錯誤「此方法不支持HTTP方法GET」。儘管這完全是一個完全不同的問題,但是關於這個問題的想法呢? – user1062839

+0

Derp。多謝你們。 – user1062839