gpt4 book ai didi

servlets - @WebServlet 注释和错误 404

转载 作者:行者123 更新时间:2023-12-01 11:55:41 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Servlet returns "HTTP Status 404 The requested resource (/servlet) is not available"

(19 个回答)


4年前关闭。




首先:我使用 GlassFish 3.1 + Eclipse Java EE indigo。
我想用 javaee 测试缓存解决方案,所以我制作了一个虚拟应用程序。我有一个很大的生成数据库,我列出、搜索、修改等一些数据。为此,我编写了一些基本的 servlet,并使用 GET 参数进行调用。例如:/app/list?page=product&pageSize=100
ListServlet 注释为

@WebServlet({ "/ListServlet", "/list" })

它就像一个魅力,我可以使用两个网址。
所以我需要一些额外的 servlet(用于搜索、修改)。我创建了它们并以相同的方式进行了注释。
但是当我输入网址时 http://localhost/app/modify或/app/search?id=1 我收到错误 404。
我试图编写一个非常虚拟的 helloservlet,它打印一条 hello world 消息,但没有奏效:错误 404。我重新启动了 glassfish 服务器和计算机,但没有帮助。

有什么问题?我错过了什么?

编辑:
servlet 是相同的包使用相同的导入...

最佳答案

您确定您的网址格式正确吗?尝试这样的事情:

@WebServlet( name="ListServlet", displayName="ListServlet", urlPatterns = {"/list","/modify", "/search"}, loadOnStartup=1)

如果您希望所有模式都进入同一个 servlet。如果没有,您将不得不为每个模式使用不同的 servlet,我猜这些 servlet 应该以不同的方式命名。

无论如何,对于这种行为,我建议使用例如 Restlet路由。

编辑:

我测试了它。在这里,我的 servlet 像魅力一样工作:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(asyncSupported = false, name = "HelloServlet1", urlPatterns = {"/hello1"})
public class TestServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.write("<h2>Hello Servlet One </h2>");
out.close();
}


}

第二个:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(asyncSupported = false, name = "HelloServlet2", urlPatterns = {"/hello2"})
public class TestServlet2 extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.write("<h2>Hello Servlet Two </h2>");
out.close();
}


}

我确实这样称呼它们: http://localhost:8080/eetest/hello1http://localhost:8080/eetest/hello2它们分别打印“Hello Servlet One”和“Hello Servlet Two”。
(在 JBoss AS 7 上测试 - 网络配置文件)

关于servlets - @WebServlet 注释和错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com