0

0

JSP中HashMap的初始化与访问:构建类似字典的数据结构

霞舞

霞舞

发布时间:2025-10-03 11:33:23

|

861人浏览过

|

来源于php中文网

原创

JSP中HashMap的初始化与访问:构建类似字典的数据结构

本文旨在指导开发者如何在JSP页面中创建并初始化一个java.util.HashMap,以实现类似Python字典或JSON对象的键值对数据结构。我们将通过具体的代码示例,展示如何便捷地声明、填充HashMap,以及如何像访问数组一样简洁地获取其存储的数据,从而高效地在JSP中管理和操作结构化数据。

在web开发中,尤其是在jsp(javaserver pages)环境中,我们经常需要处理键值对形式的数据,例如将日期映射到特定事件、存储配置参数或者其他结构化信息。这与python中的字典(dictionary)或javascript/json中的对象概念非常相似。虽然jsp本身不直接支持这种字面量形式的字典创建,但我们可以利用java的核心集合框架java.util.hashmap来实现类似的功能。

1. HashMap的创建与初始化

在JSP页面中,我们可以使用Java代码块(scriptlet)来声明和初始化HashMap。为了实现类似Python字典的简洁初始化方式,我们可以采用Java的“双大括号初始化”(double-brace initialization)技巧。这种方法实际上是创建了一个匿名内部类,并在其实例初始化块中调用put()方法来填充数据。

以下是如何在JSP中创建并初始化一个HashMap的示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




JSP HashMap 示例



<%
// 使用双大括号初始化HashMap
java.util.HashMap weekToDateMap = new java.util.HashMap() {
  {
    put("2022-37", "2022-09-17 00:00:00.0");
    put("2022-38", "2022-09-24 00:00:00.0");
    put("2022-39", "2022-10-01 00:00:00.0");
    put("2022-40", "2022-10-08 00:00:00.0");
  }
};
%>

初始化后的 HashMap 内容:

  • 2022-37 (通过 get() 方法): <%= weekToDateMap.get("2022-37") %>
  • 2022-38 (通过 JSP 方括号语法): <%= weekToDateMap["2022-38"] %>

在上述代码中,我们声明了一个名为weekToDateMap的HashMap,其键和值都是String类型。通过匿名内部类和实例初始化块,我们能够在一处集中地添加所有初始数据,使得代码结构清晰。

2. HashMap元素的访问

初始化HashMap后,我们可以通过两种方式访问其存储的元素:

2.1 使用 get() 方法 (标准Java方式)

这是Java中访问HashMap元素的标准方法。get()方法接受一个键作为参数,并返回对应的值。

<%-- 获取 "2022-37" 对应的值 --%>

标准Java方式访问 2022-37: <%= weekToDateMap.get("2022-37") %>

2.2 使用类似数组的方括号语法 (JSP特有便利)

在JSP环境中,为了方便开发者,JSP表达式语言(EL)和某些JSP容器允许我们使用类似数组的方括号语法来访问HashMap的元素,这与Python字典的访问方式非常相似。

艾绘
艾绘

艾绘:一站式绘本创作平台,AI智能绘本设计神器!

下载
<%-- 获取 "2022-37" 对应的值 --%>

JSP方括号语法访问 2022-37: <%= weekToDateMap["2022-37"] %>

重要提示: 这种方括号语法object["key"]是JSP表达式语言(EL)的特性,而不是纯粹的Java语法。在JSP Scriptlet () 中直接使用weekToDateMap["2022-37"]可能会导致编译错误。然而,当它被放置在JSP表达式 ( 或 ${}) 中时,JSP容器会自动将其解析为weekToDateMap.get("2022-37"),从而实现便捷的访问。

3. 注意事项与最佳实践

  • JSP Scriptlets 的局限性: 尽管上述方法在JSP中可行,但直接在JSP页面中使用大量Java代码(即Scriptlets)通常被认为是不良实践。它违反了MVC(Model-View-Controller)设计模式的关注点分离原则,使得JSP页面难以维护和测试。
  • 推荐做法:
    • 使用Servlet/Controller: 推荐将数据准备和业务逻辑放在Java后端(Servlet或Controller)中处理。在Servlet中创建并填充HashMap,然后将其作为请求属性(request.setAttribute("mapName", yourMap);)传递给JSP页面。
    • 结合EL (Expression Language): 在JSP页面中,使用EL (${mapName.key} 或 ${mapName['key']}) 来访问传递过来的HashMap数据。这使得JSP页面更专注于视图展示,代码更简洁。
    • 示例 (Servlet + EL):Servlet 代码片段:
      // 在您的Servlet的doGet/doPost方法中
      java.util.HashMap dataMap = new java.util.HashMap<>();
      dataMap.put("item1", "Value A");
      dataMap.put("item2", "Value B");
      request.setAttribute("myMap", dataMap); // 将HashMap存入请求属性
      request.getRequestDispatcher("/WEB-INF/myPage.jsp").forward(request, response);

      JSP 页面 (myPage.jsp) 代码片段:

      Item 1: ${myMap.item1}

      Item 2: ${myMap['item2']}

  • 双大括号初始化的考量: 这种初始化方式虽然简洁,但它会创建一个匿名内部类实例。对于每次创建HashMap都会产生一个新的类定义(即使是匿名类),这可能会对内存使用和性能产生轻微影响,尤其是在循环中频繁创建时。对于简单的、少量数据的初始化,其影响通常可以忽略不计。对于更复杂的场景,传统的new HashMap()后逐个put()或使用Java 9+的Map.of()/Map.ofEntries()方法更为推荐。

4. 总结

在JSP页面中,java.util.HashMap是实现类似Python字典或JSON对象键值对数据结构的有效工具。通过“双大括号初始化”技巧,我们可以方便地在JSP Scriptlet中声明并填充HashMap。同时,JSP提供了两种访问元素的方式:标准的get()方法和便捷的方括号语法(通过EL解析)。然而,为了遵循最佳实践和提高代码的可维护性,强烈建议将数据处理逻辑移至后端Servlet,并通过EL在JSP中展示数据,从而实现清晰的关注点分离。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

419

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

servlet生命周期
servlet生命周期

Servlet生命周期是指Servlet从创建到销毁的整个过程。本专题为大家提供servlet生命周期的各类文章,大家可以免费体验。

375

2023.08.08

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

463

2023.08.02

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

93

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

102

2025.10.23

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

0

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号