Problema ao tentar usar taglib <c:forEach> propriedade items

Estou estudando uma apostila da Caleum de java web e estou com problema para começar a estudar a parte de JSTLl, mas quando tento escrever essa parte:

"<c:forEach var="contato" //nessa parte ==> items="dao.getLista">"

está dando erro:

[“items” does not support runtime expressions] quando tendo dessa forma --> items="${dao.lista}

e no console

[GRAVE: Servlet.service() for servlet [jsp] in context with path [/fj21-agenda] threw exception [javax.el.PropertyNotFoundException: Property ‘nome’ not found on type java.lang.String] with root cause]

Alguém sabe o que fiz de errado?

Precisa colocar os jars (tanto da api quanto da implementação).
Você pode baixá-los aqui

É como o @darlan_machado flw, deve ta faltando os JARS, vc deve colocalos dentro do diretorio web-inf/lib viu. tive esse problema esses dias.

Mudei a pergunta porque resolvi essa parte.

só não tô conseguindo lista do bd ainda

Você não pode referenciar um elemento de express language na propriedade items. Você também não pode referenciar um método.
Você, obrigatoriamente, precisa colocar os valores em um atributo de um objeto.

??? Pode dar um exemplo? já tentei fazer de várias formas, mas não funfou.

Eu cometi um equívoco no comentário anterior.
As versões mais novas da JSTL (1.2) deveriam aceitar o uso de EL como parâmetro da propriedade items.
Então:

  1. Certifique-se de que está usando a taglib correta <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. Garanta que você tenha colocado um atributo contendo a lista de itens a serem tratados em algum contexto (request, session, etc).
  3. Garanta que o acesso ao objeto em questão está adequado (nome corresponde ao definido para o método getter)

Se está usando servlets + JSTL, esse exemplo está bem bacana.

No final só consegui fazendo assim:

<c:forEach var="contato" items="${dao.getList()}">