首页 > Java > java教程 > 我可以在页面加载时从 JSP 调用 Servlet,而不使用 HTML 表单吗?

我可以在页面加载时从 JSP 调用 Servlet,而不使用 HTML 表单吗?

Barbara Streisand
发布: 2024-12-09 11:54:11
原创
751 人浏览过

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

在页面加载时从 JSP 文件调用 Servlet

问题:

Servlet 可以吗无需使用 HTML 从 JSP 文件调用形式?

答案:

当然可以。要实现此目的,请利用 servlet 的 doGet() 方法来预处理请求,然后将其转发到 JSP。无需在浏览器地址栏或链接中指定 JSP URL 即可实现此目的。相反,请指向 servlet URL。

示例:

考虑以下代码片段:

Servlet (ProductsServlet.java):

@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 (products.jsp):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

...

<table border="1">
    <c:forEach items="${products}" var="product">
        <tr>
            <td>${product.name}</td>
            <td>${product.description}</td>
            <td>${product.price}</td>
        </tr>
    </c:forEach>
</table>
登录后复制

在此示例中,doGet() 方法ProductsServlet 检索产品列表并将其设置为请求属性。然后,该请求将转发到 products.jsp 页面,该页面迭代列表并在表格中显示产品。

注意:

确保 JSP 文件放置在 /WEB-INF 文件夹中以防止未经授权的直接访问。 Servlet 3.0(或更高版本)支持@WebServlet注解进行Servlet注册;但是,如果您无法升级或出于兼容性原因需要使用 web.xml,请在 web.xml 中手动注册 servlet。

其他资源:

  • [Servlets Wiki 页面](https://wiki.java.net/HowToWiki/Servlets)
  • [doGet 和Servlet 中的 doPost](https://docs.oracle.com/javaee/5/tutorial/servlets/basicservlets004.html)
  • [如何避免在 JSP 中使用 Java 代码](https://stackoverflow.com /a/9701987/6776571)
  • [Servlet 返回“HTTP 状态 404 请求的资源(/servlet) 不可用”](https://stackoverflow.com/a/4288938/6776571)

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板