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