Dev (Back & Front)ARTIGO

Aplicações JEE com JSP + JSTL + MYSQL

Neste artigo, veremos como conectar e realizar operações em um BD (MySQL) usando apenas JSP  + JSTL, ou seja, sem precisar de nenhuma classe .java. Mas essa prática não está dentro do padrão MVC, que é o recomendado para desenvolvimento. Daí você me pergunta: “então por que você criou esse artigo, Camilo?”. Simples: para mostrar que podemos ter pequenas aplicações rodando apenas com JSP + JSTL + BD. Isso é muito útil para gerar um protótipo da aplicação e mostrar a um cliente antes de colocar toda equipe de desenvolvimento em produção.

Mas não seria mais trabalhoso, já que depois teria que recriar usando um padrão MVC? Ao desenvolver uma aplicação web usando a estrutura apresentada a seguir, você não precisa ter uma equipe concentrada em toda arquitetura, mas apenas em uma parte especifica ainda não definida pelo cliente. Usando JSP + JSTL + Mysql para testes pequenos do lado do cliente pode ser considerada uma forma prática de prevenção dentro do ciclo de desenvolvimento. O tempo gasto hoje em manutenção de sistemas acontece, na maioria dos casos, por falha de comunicação  no processo de requisitos.

Não use essa estrutura para desenvolver aplicações reais. Não usar padrões, como o MVC, pode trazer várias limitações e problemas, principalmente no processo de manutenção e evolução da aplicação.

Let´s go… 

Requisitos:

  • Mysql
  • Eclipse
  • tomcat
  • Java JDK

O JSTL JavaServer Pages Standard TAG Library faz parte das especificações do J2EE que define um conjunto de extensões das tags JSP. O objetivo destas tags é substituir os scripts na página, facilitando a manutenção e o entendimento de uma página JSP. Por exemplo para receber os parâmetros de uma página, ao invés de utilizarmos programação em Java, poderíamos receber as informações utilizando o código a seguir.

<c:set var="login" value="${param.login}" /> 

Aqui estou criando uma variável login que vai receber o valor do parâmetro login no meu form.

Pode-se usar: instruções condicionais, tratamento de erros, manipulação de variáveis, importar conteúdo de outra pagina web, redirecionar uma página.

<c:import>  importar conteúdo de um página.     <c:import url ='' /menu/esquerda.jsp''/> <br /><c: redirect > Redirecionar para outra URL     <c:redirect url="/dados/end.jsp"/><br />Para usar JSTL em suas páginas JSP precisa importar a biblioteca e o prefixo de uso, veja: <br /><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Veja alguns exemplos de JSTL em ação:

Semelhante ao comando if do do java. A palavra “test” faz parte da estrutura dessa comando. Observe que passei o valor usando EL.

<c:if test="${(2<20)}"><br />    <br> 2 menor que 20<br /></c:if><br /><br /><c:set var="idade" value="10" /><br><br />${(idade >= 10)  ? "Maior que 10" : "Menor que 10"}<br /><br><br /><c:if test="${(idade < 11)}"> <br />    Adoslecente<br /></c:if>

Aqui há um efeito bem parecido com a instrução switch que temos no java. Otherwise é executado caso o teste seja false. 

<c:choose><br />    <c:when test="${4<3}"><br />            O valor é menor<br />    </c:when><br />    <c:when test="${2==2}"><br />            igual<br />    </c:when><br />    <c:otherwise><br />        O valor nao é menor<br />    </c:otherwise><br /></c:choose>

Aqui estou configurando uma variável chamada “nome” com o valor “camilo” e, em seguida, mando imprimir usando a EL.

<c:set var="nome" value="Camilo" /> <br /><br />${ nome } 

Usando forEach – mesmo efeito do forEach que temos no java.

<c:forEach var="num" begin="1" end="5"><br /><br /><c:out value="${num}"></c:out><br /><br /></c:forEach>

Conectando BD com JSTL

Agora vamos estabelecer uma conexão com um BD via JSTL. Para isso usaremos a biblioteca sql de JSTL. Então devemos declarar isso em nosso JSP.

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

1. Crie um BD + uma tabela com os campos:

  • idcategoria (integer)
  • categoria(varchar(20))

2. Crie uma pagina jsp (eu criei uma chamada incluircategoria.jsp). Agora vamos criar a variável de conexão na página jsp.

<sql:setDataSource var="conexao" dataSource="jdbc:mysql://127.0.0.1/test,com.mysql.jdbc.Driver,lopes,123"/>

3. Precisamos verificar se o usuário realmente digitou algo no campo nome do formulário. É possível testar isso com JSTL veja o código dessa página:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"<br />    pageEncoding="ISO-8859-1"%><br /><br /><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><br /><%@ taglib prefix="sql"  uri="http://java.sun.com/jsp/jstl/sql"%><br /><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><br /><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><br /><title>Insert title here</title><br /></head><br /><body><br /><sql:setDataSource dataSource="jdbc:mysql://127.0.0.1/test,com.mysql.jdbc.Driver,lopes,123" var="conexao" scope="session"/><br /><form><br /><table><br /><c:if test="${!empty param.categoria}"><br /><br /><br />	<sql:update dataSource="${conexao}" var="insercao" ><br />	insert categorias (categoria) values(?)<br />		<sql:param value="${param.categoria }"/>	<br /><br />	</sql:update><br /><br /></c:if><br /><tr><td><input type="text" name="categoria"></td></tr><br /><tr><td><input type="submit" name="cadastrar" value="Cadastrar"></td></tr><br /></table><br /></form><br /></body><br /></html>

No código acima, caso ele tenha digitado algo, inserimos o conteúdo no BD.

Agora vamos criar um comando que vai deletar com base no código.

<body><br /><sql:setDataSource dataSource="jdbc:mysql://127.0.0.1/test,com.mysql.jdbc.Driver,lopes,123" var="conexao"/><br /><!-- ISSO É HTML --><br /><form><br /><table><br /><tr><td>Excluir categoria</td></tr><br /><tr><td>Código:</td><td><input type="text" name="id"></td></tr><br /><tr><td><input type="submit" name="excluir" value="Excluir"></td></tr><br /><br /><!-- ISSO É JSTL + SQL --><br /><c:if test="${empty param.categoria}"><br /><sql:update dataSource="${conexao}" var="exclusao"><br />      delete from categorias<br />      where idcategoria = ?<br />      <sql:param value="${param.id}"  /><br />  </sql:update><br /></c:if><br /></table><br /></form><br /><br /><br /></body>

Agora abra o browser e digite: http://localhost:8080/SUA_APP/incluircategorias.jsp

O resultado será conforme a imagem a seguir:

Teste o recurso de excluir, veja o resultado a seguir:

Espero que tenham gostado do artigo. Não posso deixar de chamar atenção para aqueles que acham JSTL uma “bobagem”, que se fizerem uma pesquisa em algumas vagas de emprego para Java, algumas têm como requisito conhecimentos em JSTL (principalmente as de programador júnior java).  Abraço a todos e até a próxima.

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil