这个问题在这里已经有答案了:
如何在不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?
1条答案
按热度按时间pxq42qpu1#
您的html页面正在用户浏览器中呈现,在一个进程中运行。您的servlet在servlet引擎、jvm、不同进程中运行,可能在不同的计算机上运行。
它们通信的唯一方式是通过从浏览器到servlet引擎的http请求。
浏览器无法在jvm中找到类,它所能做的只是盲目地向html中呈现的url发送http请求,并希望servlet引擎做出响应。
它可能会提供一个servlet,根据http请求的参数中给出的类名发送http请求,然后按照您的建议执行。