Sabendo que a tecnologia Java Server Pages proporcionada pelo servidor de aplicação Tomcat nos possibilita criar aplicações web dinâmicas utilizando JavaBeans e Servlets, vamos então criar um motor básico que utiliza o principio usado por quase todas as aplicações web para o mundo corporativo, ou seja manipulação de dados.
Em aplicações Enterprise os dados na grande maioria das vezes é manipulado através de um servidor de banco de dados relacional, entretanto neste primeiro exemplo vamos utilizar um objeto Java que possibilita a criação de listas para manipular os dados, ressaltando o que realmente nos interessa neste momento é apenas o esqueleto de uma simples aplicação que mostra, adiciona, edita e deleta dados através de uma interface com o usuário.
Exemplo:
Neste exemplo utilizaremos um JavaBean que manipula dados através de um objeto List do Java e usamos Servlets para criar a interface com o usuário e manipular as ações requisitadas de entrada, edição e exclusão de dados. Utilize os comentários nos códigos abaixo para entender os processos e técnicas utilizadas.
Java
MeuJavaBean – Manipula Dados
package org.desenvolvimento.aberto;
public class MeuJavaBean {
// Declara atributo
private String nome;
private String comentario;
// Construtor Default da classe
public MeuJavaBean() {
}
// Construtor Overload
public MeuJavaBean(String nome, String comentario) {
this.nome = nome;
this.comentario = comentario;
}
// Métodos Getter e Setter
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getComentario() {
return comentario;
}
public void setComentario(String comentario) {
this.comentario = comentario;
}
}
MeuJServlet – Mostra Dados (Página Principal)
package org.desenvolvimento.aberto;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// Ler Servlet ao iniciar
@WebServlet(urlPatterns="/MeuJServlet", loadOnStartup = 1)
public class MeuJServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public MeuJServlet() {
super();
}
public void init(ServletConfig config) throws ServletException {
// Inicia configuração
super.init(config);
// Cria uma Lista com o objeto JavaBean
List<MeuJavaBean> registros = new ArrayList<MeuJavaBean>();
// Insere dados na lista
registros.add(new MeuJavaBean("Ricardo", "Olá Pessoal"));
registros.add(new MeuJavaBean("Mantovani",
"Bem-vindos ao Desenvolvimento Aberto, adicione, altere e exclua dados desta tabela"));
// Define um atributo para o contexto do servlet
getServletContext().setAttribute("registros", registros);
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Recupera contexto do JavaBean
@SuppressWarnings("unchecked")
List<MeuJavaBean> registros = (List<MeuJavaBean>) getServletContext().getAttribute("registros");
// Cria página HTML
PrintWriter html = response.getWriter();
html.println("<!DOCTYPE html>");
html.println("<head><Title>Desenvolvimento Aberto</title>");
// CSS
html.println("<style>");
html.println("td, th {");
html.println("border: none;");
html.println("background-color: #dddddd;");
html.println("padding: 5px;");
html.println("width: 200px; }");
html.println("</style>");
html.println("</head>");
// Corpo da página
html.println("<html>");
html.println("<body>");
html.println("<h1>Desenvolvimento Aberto - Beans e Servlets</h1>");
// Cria tabela
html.println("<table>");
html.println("<tr>");
html.println("<th>Nome:</th>");
html.println("<th>Comentário:</th>");
html.println("<th>Ação:</th>");
html.println("</tr>");
for (int id = 0; id < registros.size(); id++) {
// Recupera identificador
MeuJavaBean reg = registros.get(id);
html.println("<tr>");
html.println("<td>" + reg.getNome() + "</td>");
html.println("<td>" + reg.getComentario() + "</td>");
// Link de edição
html.println("<td><center>");
html.println("<a href='MeuServletEditar?identificador=" + id + "'>Editar</a> | ");
html.println("<a href='MeuServletApagar?identificador=" + id + "'>Apagar</a>");
html.println("</center></td>");
html.println("</tr>");
}
html.println("</table>");
// Define link para formulario de adicionar dados (Servlet)
html.println("<P> <a href='MeuServletAdd'>Adicione um comentário</a> </p>");
html.println("</body>");
html.println("</html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Chama método GET
doGet(request, response);
}
}
MeuServletAdd – Adiciona Dados
package org.desenvolvimento.aberto;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MeuServletAdd")
public class MeuServletAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
public MeuServletAdd() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Mostra pagina HTML
response.setContentType("text/html");
PrintWriter html = response.getWriter();
html.println("<html>");
html.println("<body>");
html.println("<h1>Desenvolvimento Aberto</h1>");
html.println("<h2>Servlet - Adiciona Dados</h2>");
// Formulário processa este mesmo Servlet e o método DoPost
html.println("<form action='MeuServletAdd' method='post'>");
html.println("Nome: <input type='text' name='nome' size ='55' /> <br>");
html.println("<textarea name='comentario' cols='50' rows='7'></textarea> <br>");
html.println("<input type='submit' name='adiciona' value='Adicionar'/> <br>");
html.println("</form>");
html.println("</body>");
html.println("</html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Recupera parâmetros
String nome = request.getParameter("nome");
String comentario = request.getParameter("comentario");
// Recupera Lista Registros
@SuppressWarnings("unchecked")
List<MeuJavaBean> registros = (List<MeuJavaBean>) getServletContext().getAttribute("registros");
// Adiciona dados ao Bean
registros.add(new MeuJavaBean(nome, comentario));
// Redireciona para o Servlet principal
response.sendRedirect("MeuJServlet");
}
}
MeuServletEditar – Edita Dados
package org.desenvolvimento.aberto;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MeuServletEditar")
public class MeuServletEditar extends HttpServlet {
private static final long serialVersionUID = 1L;
// Cria identificador
private static int id;
public MeuServletEditar() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Recupera Lista Registros
@SuppressWarnings("unchecked")
List<MeuJavaBean> registros = (List<MeuJavaBean>) getServletContext()
.getAttribute("registros");
// Recupera registro por ID
id = Integer.parseInt(request.getParameter("identificador"));
MeuJavaBean reg = registros.get(id);
// Mostra pagina HTML
response.setContentType("text/html");
PrintWriter html = response.getWriter();
html.println("<html>");
html.println("<body>");
html.println("<h1>Desenvolvimento Aberto</h1>");
html.println("<h2>Servlet - Editar Dados</h2>");
// Formulário processa este mesmo Servlet e o método DoPost
html.println("<form action='MeuServletEditar' method='post'>");
html.println("Nome: <input type='text' name='nome' size ='55' value='"
+ reg.getNome() + "'/> <br>");
html.println("<textarea name='comentario' cols='50' rows='7'>"
+ reg.getComentario() + "</textarea> <br>");
html.println("<input type='submit' name='altera' value='Alterar'/> <br>");
html.println("</form>");
html.println("</body>");
html.println("</html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Recupera parâmetros
String nome = request.getParameter("nome");
String comentario = request.getParameter("comentario");
// Recupera Lista Registros
@SuppressWarnings("unchecked")
List<MeuJavaBean> registros = (List<MeuJavaBean>) getServletContext()
.getAttribute("registros");
// Altera dados ao Bean
registros.get(id).setNome(nome);
registros.get(id).setComentario(comentario);
// Redireciona para o Servlet principal
response.sendRedirect("MeuJServlet");
}
}
MeuServletApagar – Apaga Dados
package org.desenvolvimento.aberto;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MeuServletApagar")
public class MeuServletApagar extends HttpServlet {
private static final long serialVersionUID = 1L;
public MeuServletApagar() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Recupera Lista Registros
@SuppressWarnings("unchecked")
List<MeuJavaBean> registros = (List<MeuJavaBean>) getServletContext()
.getAttribute("registros");
// Recupera registro por ID
int id = Integer.parseInt(request.getParameter("identificador"));
// Remove identificador e redireciona Servlet
registros.remove(id);
// Redireciona para o Servlet principal
response.sendRedirect("MeuJServlet");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
}


