Vejo muito artigo de tecnologia mostrando como fazer aplicativo web sem precisar de javascript ou html, apenas java. Que tal a reversal?
Você precisará dos seguintes ítens:
- java 7
- apache tomcat 7
- eclipse JEE com maven
Marque a opção "create a simple project":
Preencha conforme o screenshot e dê finish:
Como escolhemos o empacotamento do tipo war, o eclipse adiciona os floreados do wtp magicamente pra você:
Agora é hora de configurarmos o tomcat. Siga para http://tomcat.apache.org/download-70.cgi e baixe a versão .tar.tgz:
Descompacte:
Agora no eclipse vá até a aba Servers e adicione um novo servidor:
Indique a pasta do tomcat 7 e aperte finnish:
Agora vamos colocar o maven para trabalhar! abra o arquivo pom.xml e siga para a aba homônima:
Adicione as seguintes dependências:
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.177</version> </dependency>
Seu pom.xml deve estar assim:
A esta altura, o eclipse deve estar acusando um erro sobre a versão do java; adicione o compiler plugin no pom.xml para subirmos a versão do java:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>Seu pom deve ficar assim:
Não esqueça de atualizar o projeto (maven > update project):
Agora, crie o arquivo context.xml, que é onde vamos configurar nosso datsource. ele deve ficar dentro da pasta META-INF em webapp, conforme pode ser visto abaixo:
Como?! A pasta não existe? O arquivo é vazio? Crie a pasta e o arquivo e adicione no xml este conteúdo:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <Context> <Resource name="jdbc/justjstl-ds" auth="Container" type="javax.sql.DataSource" driverClassName="org.h2.Driver" username="sa" password="sa" url="jdbc:h2:justjstl" maxActive="100" maxIdle="30" maxWait="5000" testWhileIdle="true" testOnBorrow="true" testOnReturn="false" validationQuery="SELECT 1" validationInterval="30000" timeBetweenEvictionRunsMillis="30000" minIdle="10" initialSize="10" removeAbandonedTimeout="60" removeAbandoned="true" logAbandoned="true" minEvictableIdleTimeMillis="30000" /> </Context>
Vamos criar nossos jsp's agora. crie este arquivo dentro da pasta webapp e chame-o de index.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Just JSTL</title> </head> <body> <h1>JSTL Agenda</h1> <a href="new.jsp">Novo contato</a> <h2>Contatos</h2> <table style="width: 100%"> <thead> <tr> <th>ID</th> <th>Nome</th> <th>Endereço</th> <th>Telefone</th> <th>Ações</th> </tr> </thead> <tbody> <s:setDataSource dataSource="jdbc/justjstl-ds" var="ds" /> <s:update dataSource="${ds}"> create table if not exists agenda( id integer not null primary key auto_increment, nome varchar(255), endereco varchar(255), telefone varchar(255) ); </s:update> <s:query var="result" dataSource="${ds}"> select * from agenda </s:query> <c:forEach var="row" items="${result.rows}"> <tr> <td>${row.id}</td> <td>${row.nome}</td> <td>${row.endereco}</td> <td>${row.telefone}</td> <td><a href="update.jsp?id=${row.id}&nome=${row.nome}&endereco=${row.endereco}&telefone=${row.telefone}">Editar</a> |<a href="delete.jsp?id=${row.id}">Excluir</a></td> </tr> </c:forEach> </tbody> </table> </body> </html>
Agora crie o new.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Editar contato</title> </head> <body> <h1>JSTL Agenda</h1> <a href="index.jsp">Voltar</a> <h2>Contatos</h2> <form action="save.jsp" method="POST"> <p> <label>Nome</label><br /> <input name="nome"/> </p> <p> <label>Endereço</label><br /> <input name="endereco"/> </p> <p> <label>Telefone</label><br /> <input name="telefone"/> </p> <p> <input type="submit" /> </p> </form> </body> </html>
save.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Novo contato</title> <meta http-equiv="refresh" content="2;URL=index.jsp"/> </head> <body> <s:setDataSource dataSource="jdbc/justjstl-ds" var="ds" /> <s:update dataSource="${ds}"> <c:if test="${param.id eq null}"> insert into agenda (nome,endereco,telefone) values (?,?,?); </c:if> <c:if test="${param.id ne null}"> update agenda set nome = ?, endereco = ?, telefone = ? where id = ? </c:if> <s:param value="${param.nome}" /> <s:param value="${param.endereco}" /> <s:param value="${param.telefone}" /> <c:if test="${param.id ne null}"> <s:param value="${param.id}" /> </c:if> </s:update> <h1>Sucesso!</h1> </body> </html>
update.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Editar contato</title> </head> <body> <h1>JSTL Agenda</h1> <a href="index.jsp">Voltar</a> <h2>Contatos</h2> <form action="save.jsp" method="POST"> <p> <label>ID</label><br /> <input name="id" readonly value="${param.id}"/> </p> <p> <label>Nome</label><br /> <input name="nome" value="${param.nome}"/> </p> <p> <label>Endereço</label><br /> <input name="endereco" value="${param.endereco}"/> </p> <p> <label>Telefone</label><br /> <input name="telefone" value="${param.telefone}"/> </p> <p> <input type="submit" /> </p> </form> </body> </html>
delete.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql"%> <!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=ISO-8859-1"> <title>Excluir</title> <meta http-equiv="refresh" content="2;URL=index.jsp" /> </head> <body> <s:setDataSource dataSource="jdbc/justjstl-ds" var="ds" /> <s:update dataSource="${ds}"> delete from agenda where id = ? <s:param value="${param.id}" /> </s:update> <h1>Sucesso</h1> </body> </html>
A aplicação completa deve estar mais ou menos assim:
Execute a aplicação:
Pode acontecer de dar um erro dizendo que é impossível executar a aplicação:
Caso este erro ocorra, nada tema! adicione este aquivo na pasta WEB-INF:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> </web-app>
abra o arquivo de configuração do eclipse chamado org.eclipse.wst.common.project.facet.core.xml e mude o valor da installed facet jst.web para 3.0. Este arquivo não é visível normalmente, use o Navigator (window>show view>navigator) para encontrá-lo:
Rode o update project do maven mais uma vez e tudo deve estar curado. volte a executar o projeto:
Após executar, pode ocorrer outro erro:
Leia o erro da stacktrace e faça a correção pedida no context.xml:
Execute a aplicação novamente e...
Pronto! uma agenda perfeitamente funcional sem uma linha de java rodando em cima de toda tecnologia do java para a web.
Finalizando, reitero que isto é um exercício de descontração; você tem mais benefícios usando java e/ou qualquer outra tecnologia de controle mais decente. escrevendo seu aplicativo em jstl puro você conseguirá fazer códigos desnecessariamente complicados mais facilmente. Pense nisso.
No mais, jstl é uma tecnologia básica e tem sua aplicação até hoje. Basta saber como e quando usar.
Sem mais, até a próxima.
Nenhum comentário :
Postar um comentário