2011-09-26 78 views

回答

2

将其存储在应用程序或会话范围中。假设这些下拉菜单代表应用程序范围内的常量,那么您可以使用ServletContextListener。它只能在webapp的启动时执行一次。

例如

@WebListener 
public class ApplicationDataConfigurator implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent event) { 
     Map<String, String> countries = populateAndGetItSomehow(); 
     event.getServletContext().setAttribute("countries", countries); 
     // ... 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent event) { 
     // NOOP. 
    } 

} 

ServletContext的属性,也可在JSP EL通常的方式:

<select name="countries"> 
    <c:forEach items="${countries}" var="country"> 
    <option value="${country.key}">${country.value}</option> 
    </c:forEach> 
</select> 

如果你宁愿喜欢将其存储在会话代替,然后用预处理servlet代替它检查在doGet()如果它们不在当前会话中,然后填充它。您只需要认识到,这可能会影响大数据时的总内存使用量。

+0

嗨balusC感谢您的快速回复。 因为我对这个世界并不陌生。想要更多的关注这个.. 请。 –

+0

不客气。慢慢来。 – BalusC

相关问题