Map集合中数据的显示

  • EL表达式
  • jstl标签库:
  • Map集合中数据的显示


EL表达式

EL(Expression Language 表达式语言)定义了一系列隐含对象和操作符,无须Java代码即可方便地访问pageContext、request、session、application作用域中的对象。

jstl标签库:

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个开源代码的JSP标签库。
使用前操作:
a,向web工程lib文件中导入相应的jstl jar文件
b,引入jstl标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

有关循环标签:
forTokens标签和forEach标签,forEach标签用于遍历集合或数组中的数据,如下语法:

<c:forEach var=”name” items=”集合或数组” [varStatus=”status”] [begin=”begin”] [end=”end”] [step=”step”]>
    	循环体
</c:forEach>

【说明】:
  (1)var设定变量名,该变量名用于存储从集合或数组中遍历出来的元素数据。
  (2)items指定要遍历的集合。
  (3)varStatus设定变量名,该变量名保存了循环进行过程中的状态信息,
包括:index(当前循环索引)、count(循环的次数)、first(是否为第一个位置)和last(是否为最后一个位置)。
  (4)begin、end用于指定遍历的起始位置和终止位置。
  (5)step指定循环的步长,默认为1。
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

特别注意:
EL表达式和jstl标签只能用在JSP文件中。

Map集合中数据的显示

Map集合中数据的显示:
NewFileServlet.java 中代码如下:

package com.zzu.servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class NewFileServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Map<String,Double> map=new HashMap<String,Double>();
		map.put("Lily", 100.0);
		map.put("Yxx", 110.0);
		request.setAttribute("map", map);
		
		request.getRequestDispatcher("NewFile.jsp").forward(request, response);
	}
}

NewFile.jsp中代码:遍历出单个的两种方法

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${map.Lily }		
<br />~~~~~~<br />
${map['Lily'] }
</body>
</html>

http://127.0.0.1/sun/NewFileServlet 访问

输出结果如下:

es5 map遍历 el表达式遍历map_操作符


遍历出所有的用循环标签,代码如下:这里注意导jar包

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach var="m" items="${map }">
	${m.key } : ${m.value }<br />
</c:forEach>
</body>
</html>

输出结果如下:

es5 map遍历 el表达式遍历map_操作符_02


当key为数值型时:

1,循环遍历输出的结果如下:

es5 map遍历 el表达式遍历map_操作符_03


2,输出单个:

${map.2 }

es5 map遍历 el表达式遍历map_es5 map遍历_04


3,输出单个:

${map['2'] }<br />
${map["1"] }

es5 map遍历 el表达式遍历map_html_05


当key为Integer类型时:

es5 map遍历 el表达式遍历map_html_06

${map['2'] }<br />
~~~~~~
${map["1"] }

得不到要的数据,只能使用遍历。

es5 map遍历 el表达式遍历map_es5 map遍历_07


注意:

1、Map集合的key最好符合Java标识符规范,如果不符合,则在EL表达式中不能使用.的方式获取到Map相应的value,只能通过[]的方式获取到相应的value;

2、Map集合key的泛型不能是Java基本数据类型的包装类,否则EL表达式无论使用那种方式都无法获取到相应的value。

有关点和[ ]操作符

点操作符:

EL表达式通常由两部分组成:对象和属性。在EL表达式中,可以使用点操作符来访问对象的属性,例如${user.id}就是访问user对象的id属性。

[ ]操作符:

[ ]操作符也可以访问对象的属性,例如 $ {user.id}也可以写成 ${user[“id”] }。当要存取的属性名称中包含一些特殊字符,如 “.” 或 “-” 等非字母或数字的符号时,就需要使用[]操作符。例如 $ {user.my.id}应当改为 $ {user[“my.id”] }。当动态取值时,需要用[]操作符来做,而点操作符无法做到动态取值,例如在 $ {sessionScope.user[index] }中,index时一个变量。