首页 >Java >java教程 >我可以在没有 HTML 表单的情况下在页面加载时从 JSP 调用 Servlet 吗?

我可以在没有 HTML 表单的情况下在页面加载时从 JSP 调用 Servlet 吗?

Susan Sarandon
Susan Sarandon原创
2024-12-14 06:43:13513浏览

Can I Call a Servlet from a JSP on Page Load Without an HTML Form?

在页面加载时从 JSP 文件调用 Servlet,无需 HTML 表单

问题:

是否可以调用从 JSP 文件中创建 servlet 而不使用 HTML 表单?例如,在页面加载时在 HTML 表中显示数据库数据。

答案:

是的,可以从 JSP 文件调用 servlet,而无需使用 servlet 的 doGet() 方法的 HTML 表单。此方法允许您预处理请求并将其转发到 JSP。然后,您可以在链接和浏览器地址栏中指定 servlet 的 URL,而不是 JSP。

实现:

考虑以下 servlet:

@WebServlet("/products")
public class ProductsServlet extends HttpServlet {

    @EJB
    private ProductService productService;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Product> products = productService.list();
        request.setAttribute("products", products);
        request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
    }

}

还有一个例子JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
    <c:forEach items="${products}" var="product">
        <tr>
            <td>${product.name}</td>
            <td>${product.description}</td>
            <td>${product.price}</td>
        </tr>
    </c:forEach>
</table>

请注意,JSP 文件放置在 /WEB-INF 文件夹中,以防止用户在不调用 servlet 的情况下直接访问。

附加说明:

  • @WebServlet 在 Servlet 3.0 及更高版本中可用。如果使用早期版本,则需要在 web.xml 中手动注册 servlet。
  • 可以直接访问 servlet 的 URL 模式(例如,http://localhost:8080/context/products)。
  • 如果 servlet 中存在 HTML 表单,它可以使用 method="post" 发布到相同的 URL。向 Servlet 添加 doPost() 方法,用于后处理。

相关链接:

  • [Servlets Wiki](https:// wiki.java.net/bin/view/Javalin/servlets)
  • [doGet 和 doPost 中Servlet](https://docs.oracle.com/javase/7/docs/api/javax/servlet/http/HttpServlet.html#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse))
  • [避免使用 Java 代码JSP](https://www.ibm.com/developerworks/java/tutorials/j-jsp/j-jsp-avoidjava/)
  • [Servlet 返回 HTTP 状态404](https://stackoverflow.com/questions/647016/java-servlet-returns-http-status-404-the-requested-resource-is-not-available-serv)

以上是我可以在没有 HTML 表单的情况下在页面加载时从 JSP 调用 Servlet 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn