【问题标题】:404 on GET request to Servlet对 Servlet 的 GET 请求时出现 404
【发布时间】:2014-06-18 21:49:33
【问题描述】:

我已经尝试了 3 天来创建一个 Java EE 项目,该项目在单个项目中使用 JSP、Servlet 和 EJB,因为我需要为此完成课程最终作业。

我们被指示使用 JBOSS 4.2.3,所以我尝试使用它。

我的环境设置如下:

  1. http://community.linuxmint.com/tutorial/view/1372
  2. 安装 IntelliJ Idea 13 Ultimate。
  3. 下载 JBOSS 并准备要使用的目录。
  4. 经过这 3 天的努力,我设法获得了一个示例应用程序,由本教程创建: http://wiki.jetbrains.net/intellij/Developing_and_running_a_Java_EE_Hello_World_application#The_Hello_World_Java_EE_application

现在,应用程序编译,我得到了 index.jsp:http://localhost:8080/webWeb/

但是,如果我点击它,我会收到 404 错误,然后提交给http://localhost:8080/webWeb/helloworld

我不知道还能尝试什么,我想我用谷歌搜索并阅读了几乎所有内容:( 这是项目存档的链接,这样您就可以(可能)测试我的项目,看看您是否能以某种方式解决这个问题......

https://www.dropbox.com/sh/9sma5vh7usy2h3p/AADA64KPyLH29iGz8OamWyNna

谢谢!


更新: 为方便起见,我的 HelloWorldServlet.java 代码:

package myservlets;

import mybeans.HelloWorldBean;

import javax.ejb.EJB;
import java.io.IOException;

@javax.servlet.annotation.WebServlet(name = "HelloWorldServlet", urlPatterns = "/helloworld")
public class HelloWorldServlet extends javax.servlet.http.HttpServlet {
    @EJB
    private HelloWorldBean helloWorldBean;
    protected void doPost(javax.servlet.http.HttpServletRequest request,
                          javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

    }
    @Override
    protected void doGet(javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {
        String hello=helloWorldBean.sayHello();
        request.setAttribute("hello",hello);
        request.getRequestDispatcher("hello.jsp").forward(request,response);
    }
}

我觉得我真的必须补充一下,设置 Java 以使其正常工作并让我专注于 CODING 的极端困难是我更喜欢 PHP 之类的东西的原因,例如,它可以正常工作...我错了吗?

【问题讨论】:

  • 您是否有一个 URL 模式为 helloworld 的 servlet 并实现了 doGet 方法?
  • 另外,您应该在问题中发布相关代码。不要通过外部链接提供您的代码。
  • @LuiggiMendoza:我用 Servlet 更新了问题,谢谢!我只是想我应该提供整个包,包括它的部署配置,因为我觉得它与代码无关......随着代码的编译。

标签: java jakarta-ee servlets jboss


【解决方案1】:

问题是您使用的是与 Servlet 2.5 / JSP 2.1 一起使用的 JBoss 4.2.3(如 BalusC 所述:Servlet Spec for Jboss 4.2.3)。自 Servlet 3.0 起支持使用 @WebServlet 和注释。因此,您必须直接在 web.xml 文件中配置您的 servlet。

请注意,servet 2.5 也不支持 EJB 注入。

【讨论】:

  • 我该如何调整代码,以使用较低的 Servlet 版本呢?并将 EJB 使用更改为非注入?创建项目时,我无法指定使用 Servlet 2.5....
  • 谢谢@Luiggi,我尝试从头开始重新创建项目,但是按照我的原始教程 (wiki.jetbrains.net/intellij/…),我似乎无法指定 Web 应用程序版本,唯一的选择是 3.1 ...我也尝试使用据称支持注释的 JBOSS 6,但在部署项目时仍然出现 404 错误。我应该附上部署的服务器日志吗?
  • 您的项目是否有一个 web.xml 来解释您正在使用的 servlet 版本,对吗?否则,应用程序将无法运行。
  • 我尝试将 web.xml 添加到 web 模块,添加 Servlet 映射,并尝试使用应该支持更新的 JBOSS 6.1.0 Final - 没有工作,最后我再次尝试JBOSS 4.2.3 版本 - 现在可以使用了!我不知道为什么,有什么不同...我观察到,即使我在 web.xml 中为 Servlet 手动编写 version="2.5",IDE 也无法识别它,它仍然无法正常工作。其他东西可以解决问题,因为现在它有效,我不知道为什么或什么......但只要它有效,谢谢! :)
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2022-01-05
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多