为什么我不能从html“直接”调用servlet?

trnvg8h3  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(495)

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

如何在不Mapweb.xml的情况下调用servlet(3个答案)
26天前关门了。
作为jsp和servlet的初学者,我学习了两种从html文件调用servlet的方法。一个是使用servlet注解,另一个是使用xml的Map配置。请原谅我的无知,但是为什么我不能在表单的actionattribute中简单地写servlet的名称呢?迫使美国开发人员特别关注servlet的“curton”背后发生了什么?不像我们可以直接调用的html和jsp文件。
这就是我要说的。或者,为什么这么做是不正确的:
索引.html:

<html><body>
    <form action="MyServlet" method="POST">
        Enter name: <input type="text" name="name">
        <button>Submit name</button>
    </form>
</body></html>

myservlet.java文件:

public class MyServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter pw = resp.getWriter();
        String input = req.getParameter("name");
        pw.println("hello " + input);
    }
}

我认为Mapservlet为我们提供了灵活性和安全性。但我的问题仍然存在。为什么“直接调用”servlet类文件不可用 404 error not found ? 为什么服务器找不到我的servlet?

pxq42qpu

pxq42qpu1#

您的html页面正在用户浏览器中呈现,在一个进程中运行。您的servlet在servlet引擎、jvm、不同进程中运行,可能在不同的计算机上运行。
它们通信的唯一方式是通过从浏览器到servlet引擎的http请求。
浏览器无法在jvm中找到类,它所能做的只是盲目地向html中呈现的url发送http请求,并希望servlet引擎做出响应。
它可能会提供一个servlet,根据http请求的参数中给出的类名发送http请求,然后按照您的建议执行。

相关问题