【发布时间】:2014-07-26 21:10:20
【问题描述】:
我正在尝试使用 JSP 中的表达式语言回答问题。我尝试了一些代码,但它无法正常工作。有人可以帮我吗?
问题 - 来源=How to call servlet on jsp page load
我想在加载 index.jsp 页面时调用一个 servlet 'latest_products'。这个 servlet 在 List 中有记录。我想将此列表传递给 index.jsp。但我不想在 url 中显示 servlet 的名称。有什么办法可以做到这一点。
预期输出 - 标题加上三个产品名称的列表。
实际输出 - 仅标题。
我尝试了什么 -
小服务程序:
public class ProductList extends HttpServlet {
private static final long serialVersionUID = 1L;
public ProductList() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<String> products = new ArrayList<String>();
products.add("Car");
products.add("Gun");
products.add("Shades");
request.setAttribute("productsList", products);
}
}
JSP:
<%@ page language="java" contentType="blah..."%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "blah...">
<html>
<head>
<meta http-equiv="blah...">
</head>
<body>
<c:import url="/ProductList" />
<c:set var="myProducts" scope="request" value="${param.productsList}"/>
<h1>List of products from servlet</h1>
<c:forEach var="product" items= "${myProducts}" varStatus="i">
${product}<br>
</c:forEach>
</body>
</html>
除此之外还有一个小问题,当我在</c:foreach> 标记之后用</c:set> 括起c:set 标记时,为什么会出现错误Encountered illegal body of tag "c:set" tag, given its attributes?我认为 c:set 就像一个具有范围的代码块。但是,好像没有。
谢谢。
【问题讨论】:
标签: java jsp jakarta-ee servlets