html - 如何从 HTML 表单调用 servlet 类

标签 html forms servlets

我创建了一个 Web 应用程序项目。它包含一个 servlet 类和一个 HTML 表单。如何从 HTML 表单调用 servlet 类?

最佳答案

只需创建一个扩展 HttpServlet 的类并用 @WebServlet 注释在特定的 URL 模式上。

@WebServlet("/login")
public class LoginServlet extends HttpServlet {}

或者当您仍在使用 Servlet 2.5 或更早版本时(注解是自 Servlet 3.0 以来新增的),然后将 servlet 注册为 <servlet>web.xml并通过 <servlet-mapping> 将其映射到特定的 URL 模式.

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.example.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>

然后,只需让 HTML 链接或表单操作指向与 url-pattern 相匹配的 URL。的 servlet。

<a href="${pageContext.request.contextPath}/login">Login</a>
<form action="${pageContext.request.contextPath}/login" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">
</form>

使用提交按钮时,请确保使用 type="submit"而不是 type="button" .关于 ${pageContext.request.contextPath} 的解释部分可以在这个相关的问答中找到:How to use servlet URL pattern in HTML form action without getting HTTP 404 error .

链接和表格 method="get"将调用 doGet() servlet 的方法。您通常使用此方法“在页面加载时”预处理请求。

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...
}

使用 method="post" 的表格将调用 doPost() servlet 的方法。您通常使用此方法对包含用户提交的表单数据的请求进行后处理(收集请求参数、转换和验证它们、更新模型、调用业务操作并最终呈现响应)。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...
}

要了解有关 servlet 的更多信息并查找更多具体示例,请前往 our Servlets wiki page .应该注意的是,您还可以使用 JSP 文件而不是纯 HTML 文件。 JSP 允许您在生成 HTML 输出时通过 EL 表达式与后端交互,并使用 JSTL 等标签库来控制流程。另见 our JSP wiki page .

关于html - 如何从 HTML 表单调用 servlet 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2395251/

相关文章:

html - 左 Div 应移至右 Div 下方

php - 向 PHP 表单添加主题行

javascript - 使用 javascript 验证各个表单输入

java - 如何将对象(定义到 servlet 中)放入 session 中以将其用于 JSP 页面?

html - 为什么我的文字闪烁?

html - float 在 bootstrap div 中的垂直文本

java - 如何将 Eclipse 动态 Web 项目文件夹结构与 Tomcat6 集成

spring - 如何在 Vaadin 应用程序中处理发布请求?

html - Magento 站点在 chrome 移动浏览器上比在 chrome 桌面浏览器上更宽-由于右浮动 div?-需要天才

php - 如何在提交表单后自动选择列表菜单中的选中项?