Java 如何动态更新JSP页面上下文中设置的属性?

Java 如何动态更新JSP页面上下文中设置的属性?,java,jsp,servlets,Java,Jsp,Servlets,如果我错了,请纠正我。我正在开发一个用于学习的小型web应用程序。我有一个jsp,其中游戏中的顶级得分手列表将显示在一个表中。为此,我编写了一个ServletContextListener,在contextInitialized方法中,我在ContextScope中设置了一个AttributeLinedHashSet,这是游戏中排名前10的得分者列表。我认为可以使用EL访问它。但是如何更新此集合?您可以在此处使用request.getSession.getServletContext.getAt

如果我错了,请纠正我。我正在开发一个用于学习的小型web应用程序。我有一个jsp,其中游戏中的顶级得分手列表将显示在一个表中。为此,我编写了一个ServletContextListener,在contextInitialized方法中,我在ContextScope中设置了一个AttributeLinedHashSet,这是游戏中排名前10的得分者列表。我认为可以使用EL访问它。但是如何更新此集合?

您可以在此处使用request.getSession.getServletContext.getAttributeyour_attribute_name_,并可以访问LinkedHashSet,一旦获得它,您可以添加/删除/更新其中的值,然后再次将其设置回将更新的值,如request.getSession.getServletContext.setAttributeyour_attribute_attribute_name_,更新_LinkedHashSet;据我所知,使用EL可以访问它,但不能将更新后的值放回属性中


注意:在访问属性时,您需要显式类型转换。

您可以更新属性,如:

    <%((Set<String>)pageContext.getServletContext().getAttribute("set")).add("Second"); %>
    <% Set<String> set = (Set<String>) pageContext.getServletContext().getAttribute("set"); %>
    from servlet context
        <c:forEach items="${set}" var="s">
          <c:out value="${s}"/>
        </c:forEach>

我认为应该避免在JSP中使用java代码。这只是一个示例,您可以在servlet中更新它,如request.getServletContext.getAttributeset;并执行更新。