java - Maven Jetty 插件 - Servlet 不工作

标签 java servlets maven jetty

我在 /src/main/java/examples/web/SimpleServlet.java 中编码了以下 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,所以我知道 Jetty 至少部分工作。

现在问题:虽然我能够访问 index.jsp,但无法访问 /simple-webapp/SimpleServlet ——我刚刚从 Jetty 收到 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

最佳答案

URL 区分大小写。定义的 URL 模式与您请求的值不匹配:

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

尝试http://localhost:8080/simple-webapp/simpleservlet (小写 servlet 名称)。

关于java - Maven Jetty 插件 - Servlet 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249715/

相关文章:

java - 除了手动之外,还有什么方法可以在 Eclipse IDE 中进行 servlet 映射吗?

java - .classpath 中导出的属性有什么作用?

maven - 使用maven jetty时:run - is it possible to disable the compilation step?

Java:找不到类:net.sf.cglib.proxy.MethodInterceptor

java - 如何将信息日志记录到一个文件并将错误日志记录到另一个文件

spring - org.springframework.web.filter.CharacterEncodingFilter 无法转换为 javax.servlet.Filter

java - 如何将jar包集成到maven项目中

java - JSONArray 中的 JSONArray

java - POST JSON 并检索 JSON 响应,即使出现 40X 错误

java - 还有什么更好的方法来发送响应并以表结构打印数据?