JSP – Aplicações Web – Usando Servlets e JavaBeans – Java

Publicado: 4 de novembro de 2014 em Java

Um servidor de aplicação Java processa paginas JSP e a transforma em um Servlet, mesmo o mais simples código HTML contido em uma pagina JSP é transformado em um Servlet pelo servidor de aplicação, após a obtenção do Servlet este é compilado para uma linguagem intermediaria chamada de ByteCode que então é interpretada pela maquina virtual Java responsável por executar a aplicação.

Com ajuda do servidor de aplicação Java se dá o processo do protocolo de comunicação para que possamos utilizar a pagina processada e interpretada através do nosso navegador web. Deste modo JavaBeans e Servlets são amplamente utilizados na tecnologia Java Server Pages, seja de um modo implícito ou explicito.

JSP

JSP

Ao criarmos uma simples pagina JSP do tipo HTML o servidor Tomcat a converterá em um Servlet para que possa ser compilada para Bytecode para ser executada pela maquina virtual Java. Você pode ver este processo navegando na aba Server do Eclipse escolhendo a opção Browse Deployment Location e navegando na pasta temporária que o Tomcat utiliza para sua aplicação:

Workspace do Eclipse: C:\Desenvolvimento Aberto\Java\workspace\

Pasta temporária do Tomcat: [workspace] .metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\DaWebApp\org\apache\jsp

Para nossa pagina JSP chamada NewFile.jsp o servidor a transforma em NewFile.jsp.java e em seguida em NewFile.jsp.class

NewFile.jsp

NewFile.jsp

NewFile.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>Desenvolvimento Aberto</title>
</head>
<body>
<p>Está página se tornará um Servlet</p>
</body>
</html>

NewFile.jsp.Java (Convertida automaticamente em Servlet pelo Tomcat)

/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/8.0.14
 * Generated at: 2014-11-04 21:02:55 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class NewFile_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
return;
}

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

    try {
      response.setContentType("text/html; charset=ISO-8859-1");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n");
      out.write("<title>Desenvolvimento Aberto</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("<p>Está página se tornará um Servlet</p>\r\n");
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

Utilizando um Servlet e um Javabean

Agora que já sabemos como o servidor de aplicação Java Tomcat funciona em seus bastidores, também sabemos que não precisamos de uma pagina JSP em si para criar uma aplicação web, já que sabemos que ela é transformada em um Servlet de qualquer modo, podemos criar um Servlet diretamente.

Vamos então utilizar um Servlet para criar uma pagina web utilizando seu método de extensão do protocolo HTTP chamado doGet e utilizar um Javabean para criar uma classe do objeto de dados. Não utilizaremos um Database neste exemplo básico mas sim uma lista contendo Arrays de dados que serão exibidos em uma tabela HTML:

Servlet e JavaBeans

Servlet e JavaBeans

Exemplo:

Neste exemplo utilizamos um Servlet para criar uma pagina html e inicializar dados do objeto JavaBean. Um objeto JavaBean por convenção precisa ter um construtor padrão que possa ser inicializado sem precisar de qualquer parâmetro, mas para facilitar a manipulação do JavaBean pelo Servlet declaramos um construtor Overload, possibilitando que o Servlet mantenha o padrão regido por sua convenção e também possibilite a criação de parâmetros na inicialização do Bean.

Java

Servlet

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"));
		registros
				.add(new MeuJavaBean("Ricardo",
						"Fiquem atualizados com as novas e classicas técnicas de programação"));
		registros.add(new MeuJavaBean("Mantovani",
				"Participem dos projetos de código Aberto."));

		// 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</h1>");
		html.println("<h2>Usando Java Servlets e JavaBeans</h2>");

		// Cria tabela
		html.println("<table>");
		html.println("<tr>");
		html.println("<th>Nome:</th>");
		html.println("<th>Comentário:</th>");
		html.println("</tr>");

		for (MeuJavaBean reg : registros) {
			html.println("<tr>");
			html.println("<td>" + reg.getNome() + "</td>");
			html.println("<td>" + reg.getComentario() + "</td>");
			html.println("</tr>");
		}

		html.println("</table>");

		html.println("</body>");
		html.println("</html>");
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		// Chama método GET
		doGet(request, response);
	}

}

JavaBean

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;
	}

}

 

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s