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