【问题标题】:running and deploying servlet with eclipse and tomcat 7使用 eclipse 和 tomcat 7 运行和部署 servlet
【发布时间】:2012-07-15 11:14:45
【问题描述】:
  1. 我基于Tomcat HelloWorld Servlet with Eclipse创建了一个测试项目
  2. 并尝试像使用 Tomcat 7 一样从 Eclipse 运行它,我已将其配置为在 127.0.0.1 上运行 - 但我在 127.0.0.1/helloworld/HelloWorld 处得到 Page cannot be found
  3. 我还尝试导出为 war 文件并将其部署到作为 Windows 服务运行的(否则工作的)Tomcat 服务器 - 并使用 Tomcat 应用程序管理器进行部署 - manifest.mf 并且这些类很好地复制到了 tomcat/webapps/helloworld ,但尝试导航到 127.0.0.1/helloworld/HelloWorld 再次失败,显示 HTTP Status 404

从默认的@WebServlet 到 web.xml 配置

接下来,在 HelloWorld.java 中,我尝试注释掉

//@WebServlet("/HelloWorld")

然后添加特定于 web 应用程序的 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"
    version="3.0">
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

但结果还是一样——没有反应!

解决方案?

  • 鉴于链接教程提供了 Tomcat 6 的说明,我是否应该进行一些更改以使其与 Tomcat 7 一起使用?
  • 具体来说,Eclipse添加的默认@WebServlet("/HelloWorld")够不够用? Servlet 3.0 的基于注释的配置需要什么才能工作(没有 web.xml)?
  • 或者是有什么东西阻止了全局 tomcat 服务器级别的任何 Web 应用程序部署?我已经稍微更改了服务器配置,不幸的是我不记得具体是什么,除了让它在 127.0.0.1 而不是 127.0.0.1:8080 上服务

【问题讨论】:

  • 在 webapp 的根目录下添加 index.html 文件。如果您在浏览器中点击此选项,则应用程序已成功部署为预期路径,问题出在 Servlet 映射上。如果不是,则应用程序未部署在预期路径。
  • @Alan 谢谢!:我添加了 /tomcat/webapps/helloworld/index.html 但浏览到 127.0.0.1/helloworld/HelloWorld 和 127.0.0.1/helloworld 都没有显示任何新的响应 - 似乎像后者一样,即未部署应用程序 - 我如何从这里继续进行故障排除?
  • 你不必指定端口,因此是 127.0.0.1:8080/helloworld/HelloWorld?
  • 我遇到了这个问题:由于某种原因,我的部署服务器上的 tomcat 设置忽略了@WebServlet 注释,但是如果我将信息冗余地添加到 web.xml 中,那么 eclipse 不会喜欢它,所以解决方案是删除注释并只使用 web.xml (我也在使用过滤器,所以删除 web.xml 不是一个选项)。

标签: java eclipse tomcat deployment webserver


【解决方案1】:

打开您的动态网络项目的属性页面,点击“网络项目设置”并使用上下文根参数作为您的 URL 的根路径。

【讨论】:

  • 我是,我在创建动态 Web 项目时做到了helloworld。但是,问题的症结似乎确实是应用程序的部署(而不是 servlet)——例如,在我使用 the tomcat application manager 部署 war 文件后,它不会出现在 the manager applications list 中,即使它显示为 @ 987654325@部署?
  • 要查看 wtp 真正部署的内容,请转到定义服务器和 Web 应用程序运行方式的调试配置,选择参数并查找 wtp.deploy jvm 参数。它定义了 wtp 为您的 Web 应用程序复制文件的目录。检查该目录并查看所有内容是否都在应有的位置并具有所需的名称。如果缺少某些内容,请清理并重新发布(wtp 在该部署作业上不是很可靠)。如果名称不正确,请检查您的项目配置。
  • 主要问题原来是我使用Java 7编译类,所以changing the target to 1.6 resolved the issues
【解决方案2】:

尝试在 WebContent 中放置一个默认的 Index.html 页面,并查看欢迎页面是否指向它。如果是,则尝试手动输入 servlet 名称并查看是否有效。我得到了同样的错误,但这样做可以解决它。

http://localhost:8080/<Project_Name>/index.html

http://localhost:8080/<Project_Name>/servlet_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多