【问题标题】:Tomcat 7.0: Requested Resource (Servlet) not availableTomcat 7.0:请求的资源 (Servlet) 不可用
【发布时间】:2015-02-20 18:26:58
【问题描述】:


我拼命尝试从 HTML 操作表单执行 Servlet 并收到以下错误消息:

HTTP 状态 404 - /WSE_Web/QueryServlet

类型:状态报告

消息: /WSE_Web/QueryServlet

说明:请求的资源 (/WSE_Web/QueryServlet) 不可用。

我在这里查看了几个问题和教程,但我找不到我缺少的东西(我对 Servlet 和 Web 编程也不是很熟悉)。
我正在使用 Eclipse 和 Tomcat 7.0.12。

我的操作表单:

我的 Servlet 类:

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;

@WebServlet("/QueryServlet")
public class QueryServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("Hello World"); 
    }
}

我的 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" metadata-complete="true" version="3.0">
  <display-name>WSE_Web</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

项目结构:

【问题讨论】:

标签: java tomcat servlets


【解决方案1】:

如果您的应用程序上下文是/WSE_Web,那么您的应用程序是正确的并且应该可以工作。

但如果 /WSE_Web 不是您的应用程序上下文,请将 url-pattern 更改为:

@WebServlet("/WSE_Web/QueryServlet")

确保您也可以使用 web.xml 文件:

<web-app>
    ...
    <servlet>
        <servlet-name>QueryServlet</servlet-name>
        <servlet-class>servlet.QueryServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>QueryServlet</servlet-name>
        <url-pattern>/QueryServlet</url-pattern>
    </servlet-mapping>
</web-app>

【讨论】:

  • 我的 HTML 页面在 localhost:8080/WSE_Web 运行,当单击操作表单时,我正在点击 localhost:8080/WSE_Web/QueryServlet,所以一切都应该没问题。
  • @FrankWittich:你试过/WSE_Web/QueryServlet而不是/QueryServlet吗?
  • 是的,不幸的是没有帮助。结果总是一样的。
  • @FrankWittich:试试 web.xml 的方式。我已经编辑了我的答案。
  • 我不确定它做了什么改变,但现在它可以工作了。非常感谢! :)
【解决方案2】:

确保你有正确的 html:

<input type='text' name='query' size='96'/><!-- your missing the `/` at the end -->
<input type='submit' name='subButton' value='Search!'/><!-- your missing the `/` at the end -->

还将方法值更改为get,因为您只覆盖doGet()

<form method='get' action='QueryServlet'>
...
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2019-11-18
    • 2010-12-04
    相关资源
    最近更新 更多