java jsp遍历map_如何在JSP中循环HashMap?

本文介绍了在JSP中如何循环遍历HashMap的方法,并推荐使用JSTL进行迭代操作。通过示例展示了如何利用Servlet设置属性及使用JSTL标签进行遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

如何在JSP中循环访问aHashMap?

HashMap countries = MainUtils.getCountries(l);

%>

// Here I need to loop through countries.

%>

#1 热门回答(282 赞)

就像在普通Java代码中一样。

for (Map.Entry entry : countries.entrySet()) {

String key = entry.getKey();

String value = entry.getValue();

// ...

}

但是,scriptlets(JSP文件中的原始Java代码,那些28932294th)被认为是apoor practice。我建议安装JSTL(只需删除/WEB-INF/lib中的JAR文件并在JSP顶部声明所需的taglibs)。它有一个tag,可以迭代Maps。每次迭代都会给你aMap.Entryback,而后者又有getKey()和getValue()方法。

这是一个基本的例子:

Key = ${entry.key}, value = ${entry.value}

因此,你的特定问题可以解决如下:

${country.value}

你需要aServlet或aServletContextListener将${countries}放置在所需范围内。如果此列表应该是基于请求的,那么请使用Servlet的doGet():

protected void doGet(HttpServletRequest request, HttpServletResponse response) {

Map countries = MainUtils.getCountries();

request.setAttribute("countries", countries);

request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

}

或者,如果此列表应该是应用程序范围的常量,那么使用ServletContextListener的contextInitialized(),它将只加载一次并保存在内存中:

public void contextInitialized(ServletContextEvent event) {

Map countries = MainUtils.getCountries();

event.getServletContext().setAttribute("countries", countries);

}

在这两种情况下,countries都将在ELby${countries}中提供。

希望这可以帮助。

也可以看看:

使用JSTL 标记迭代List和Map的元素

如何在中迭代嵌套映射

如何使用JSTL迭代HashMap中的ArrayList?

使用特殊的自动启动servlet在启动时初始化并共享应用程序数据

#2 热门回答(1 赞)

根据你想要在循环中完成的内容,迭代其中一个:

countries.keySet()

countries.entrySet()

countries.values()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值