Java 无法在JSP中迭代列表

Java 无法在JSP中迭代列表,java,jsp,jakarta-ee,servlets,Java,Jsp,Jakarta Ee,Servlets,我试图用JSP中的表达式语言回答一个问题。我尝试了一些代码,但无法正常工作。有人能帮我吗 问题- 来源= 我想在加载index.jsp页面时调用一个servlet“latest_products”。这个servlet在列表中有记录。我想把这个列表传递给index.jsp。但我不想在url中显示servlet的名称。我有什么办法可以做到这一点吗 预期输出-标题加上三个产品名称的列表 实际输出-仅标题 我尝试过的- Servlet: public class ProductList extends

我试图用JSP中的表达式语言回答一个问题。我尝试了一些代码,但无法正常工作。有人能帮我吗

问题- 来源=

我想在加载index.jsp页面时调用一个servlet“latest_products”。这个servlet在列表中有记录。我想把这个列表传递给index.jsp。但我不想在url中显示servlet的名称。我有什么办法可以做到这一点吗

预期输出-标题加上三个产品名称的列表

实际输出-仅标题

我尝试过的-

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);

    }

}
公共类ProductList扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
公共产品列表(){
超级();
//TODO自动生成的构造函数存根
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
列表产品=新的ArrayList();
产品。添加(“汽车”);
产品。添加(“枪”);
产品。添加(“阴影”);
setAttribute(“productsList”,products);
}
}
JSP:


servlet中的产品列表
${product}
除此之外还有一个小问题,当我在
标记后用
将c:set标记括起来时,为什么会遇到标记“c:set”标记的非法主体出现错误?我认为c:set就像一块有作用域的代码。但事实似乎并非如此

谢谢。

试试看

<c:set var="myProducts" value="${requestScope.productsList}" />

编辑
是将调用Servlet的
doGet()
方法的GET请求,根据您的代码,该请求为空,这就是JSP页面上没有显示任何内容的原因


doGet()
方法调用
doPost()
方法,或者提供
doGet()
方法的实现。

谢谢。对不起,我忘了提一下,即使c:set的开始标记的末尾并没有斜杠,我仍然得到那个错误。我想知道为什么。所以,这个c:set不像是一个具有可变范围的代码块,因为
c:set
不支持任何主体。它显示来自TagLibraryValidator的
验证错误消息-标记“c:set”标记的非法主体
谢谢。是的,param来自html表单。我的错。但是,我使用了你提供的两种方法,我仍然没有得到我的产品清单。请帮我把它修好。它对我很好用。让我和大家分享一下代码。有时候,我的输出在重新发布到tomcat、重新启动和清理之后甚至没有改变。为了安全起见,我将关闭并重新启动eclipse。有时候,事情从那以后就开始起作用了。
<c:set var="myProducts" value="${requestScope.productsList}" />
<c:set var="myProducts" scope="request" value="${productsList}" />
<c:set var="myProducts" scope="request" value="${param.productsList}" />
<c:set var="myProducts" scope="request" value="${param.productsList}"/>