Post on 26-Jun-2015
description
JSP & Servlets Expression Language
Técnicas de Programação FA7
Prof.º Eduardo Mendes
Servlet public void doGet( HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Cerveja ce = new Cerveja(); request.setAttribute(“cerva”, ce); RequestDispatcher dispatcher = request.getRequestDispatcher("cervejas.jsp"); dispatcher.forward(request, response);
}
Código Jsp Recuperando o atributo
<html> <body> Marca da cerveja é: <%=((Cerveja) request.getAttribute(“cerva”)).getMarca() %> <br/>
Tamanho da cerveja é: <%=((Cerveja)request.getAttribute(“cerva”)).getTamanho()%> </body> </html>
Código Jsp Recuperando o atributo com EL
<html> <body> Marca da cerveja é: ${cerva.marca} <br/> ((Cerveja) request.getAttribute(“cerva”)).getMarca()
Tamanho da cerveja é: ${cerva.tamanho} ((Cerveja) request.getAttribute(“cerva”)).getTamanho()
</body> </html> Substitui: <%= ((Cerveja) request.getAttribute(“cerva”)).getMarca() %>
Descontruindo a El ! Expressões El
! Entre Chaves ! Pré-fixadas com um cifrão
pageScope requestScope sessionScope applicationScope param paramValues outros
No escopo de página No escopo de requisição No escopo de sessão No escopo de aplicação
Operador Ponto ! Se a expressão é seguida de um ponto, o lado
esquerdo deve ser um Map ou um bean
Operador Ponto ! O que há do lado direito deve ser o índice de um
Map ou a propriedade de um bean
O operador [] ! Isto:
! É a mesma coisa que:
O operador [] fornece mais opções
Se a expressão tem uma variável seguida por [], a variável do lado esquerdo pode ser um Map, um bean, um List ou um Array
O operador [] fornece mais opções
! Se a coisa dentro dos colchetes é uma String literal, ela pode ser o índice de um Map ou a propriedade de um bean ou um índice de um List ou de um Array
Usando o operador [] com um Array
! No Servlet String[] musicas = {“Andanças”, “Como uma onda”, “Djobi, Djoba”};
request.setAttribute(“listaDeMusicas”, musicas);
! Na Jsp A música é: ${listaDeMusicas} Primeira música é: ${listaDeMusica[0]} Segunda música é: ${listaDeMusica[“1”]}
A música é [Ljava.lang.String;@d2922dd9
Primeira música é: Andanças
Segunda música é: Como uma onda
Um índice String é convertido para uma int
! No Servlet ArrayList comidasFavoritas = new ArrayList(); comidasFavoritas.add(“Sushi”); comidasFavoritas.add(“Massa do Spoleto”);
! Na Jsp As comidas são: ${comidasFavoritas} Primeira comida é: ${comidasFavoritas[0]} Segunda comida é: ${comidasFavoritas[1]}
As comidas são: [sushi, Massa do Spoleto]
Primeira comida é: Sushi
Segunda comida é: Massa do Spoleto
O que vai ser impresso?? ArrayList nums = new ArrayList(); nums.add(“1”); nums.add(“2”); nums.add(“0”); request.setAttribute(“numeros”, nums); String[] musicaFavorita = {“Andanças”, “Djobi,Djoba”, “Blau Blau”};
${musicaFavorita[numeros[0]]} ${musicaFavorita[numeros[0] + 1]} ${musicaFavorita[numeros[“2”]]}
Djobi, Djoba
Blau Blau
Andanças
<c:if>
Teste com <c:if> e EL ! Operadores Aritméticos
! Adição + ! Subtração - ! Multiplicação * ! Divisão / e div ! Mod % e mod
! Lógicos ! And && e and ! Or || e or ! Not ! e not
! Relacionais ! Igual == e eq ! Diferente != e ne ! Menor que < e lt ! Maior que > e gt ! Menor/Igual <= e le ! Maior/Igual >= e ge
<c:if> teste condicional
! No servlet, em um doGet(), com uma chamada informar.do?sexo=M
String sexo = request.getParameter("sexo"); request.setAttribute("sexo", sexo);
! Na JSP <c:if test="${sexo eq 'M'}" > O sexo informado é <strong>Masculino</strong> </c:if> <c:if test="${sexo ne 'M'}" > O sexo informado é <strong>Feminino</strong> </c:if>
Atenção
! Em JSTL,
NÃO EXISTE <c:else>