为什么我不能 "directly" 从 HTML 调用 Servlet?
Why I can't "directly" call Servlet from HTML?
作为 JSP 和 Servlet 的初学者,我学会了两种从 HTML 文件调用 Servlet 的方法。一种是使用 servlet 注释,另一种是使用 XML 的映射 配置。请原谅我的无知,但为什么我不能简单地将Servlet的名称写在表单的actionattribute中呢?迫使我们开发人员特别关注Servlets的“curton”背后到底发生了什么?不像HTML和JSP文件我们可以直接调用。
这就是我要说的。或者,为什么简单地这样做是不正确的:
index.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);
}
}
我理解映射 servlets 为我们提供了灵活性和安全性。但我的问题仍然存在。为什么“直接调用”Servlet class 文件不可用并给出 404 error not found
?为什么 server 找不到我的 servlet?
您的 HTML 页面正在用户浏览器中呈现,运行 在一个进程中。您的 servlet 运行 在 servlet 引擎中,在 JVM 中,在不同的进程中,可能在不同的计算机上。
它们唯一的通信方式是通过从浏览器到 servlet 引擎的 HTTP 请求。
浏览器无法在 JVM 中找到 classes,它所能做的就是盲目地向 HTML 中呈现的 URL 发送 HTTP 请求,并希望servlet 引擎响应。
可能会提供一个 servlet,它根据 HTTP 请求参数中给定的 class 名称发送 HTTP 请求,然后执行您的建议。
作为 JSP 和 Servlet 的初学者,我学会了两种从 HTML 文件调用 Servlet 的方法。一种是使用 servlet 注释,另一种是使用 XML 的映射 配置。请原谅我的无知,但为什么我不能简单地将Servlet的名称写在表单的actionattribute中呢?迫使我们开发人员特别关注Servlets的“curton”背后到底发生了什么?不像HTML和JSP文件我们可以直接调用。
这就是我要说的。或者,为什么简单地这样做是不正确的:
index.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);
}
}
我理解映射 servlets 为我们提供了灵活性和安全性。但我的问题仍然存在。为什么“直接调用”Servlet class 文件不可用并给出 404 error not found
?为什么 server 找不到我的 servlet?
您的 HTML 页面正在用户浏览器中呈现,运行 在一个进程中。您的 servlet 运行 在 servlet 引擎中,在 JVM 中,在不同的进程中,可能在不同的计算机上。
它们唯一的通信方式是通过从浏览器到 servlet 引擎的 HTTP 请求。
浏览器无法在 JVM 中找到 classes,它所能做的就是盲目地向 HTML 中呈现的 URL 发送 HTTP 请求,并希望servlet 引擎响应。
可能会提供一个 servlet,它根据 HTTP 请求参数中给定的 class 名称发送 HTTP 请求,然后执行您的建议。