Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758
{"id":447,"date":"2014-03-16T23:38:29","date_gmt":"2014-03-17T02:38:29","guid":{"rendered":"http:\/\/www.feltex.com.br\/felix\/?p=447"},"modified":"2014-12-30T08:44:54","modified_gmt":"2014-12-30T10:44:54","slug":"exemplo-completo-jsp-jstl-servlet-jdbc-postgresql","status":"publish","type":"post","link":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/","title":{"rendered":"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL"},"content":{"rendered":"

Ol\u00e1 Amigos,
\n Hoje criaremos um projeto completo com as tecnologias java: JSP + JSTL + Servlet + JDBC + PostgreSQL.
\n Claro que iniciaremos com uma breve descri\u00e7\u00e3o de cada uma delas.<\/p>\n

Tecnologias utilizadas no exemplo<\/h2>\n
  • JSP (Java Server Page) \u00e9 a tecnologia Java para constru\u00e7\u00e3o de p\u00e1ginas din\u00e2micas.<\/li>\n
  • JSTL (JSP Stantard Tag Library) \u00e9 uma biblioteca de tags que nos ajudam na constru\u00e7\u00e3o de p\u00e1gina din\u00e2mica sem utilizarmos a scriplet (c\u00f3digo Java diretamente na p\u00e1gina)<\/li>\n
  • Servlet s\u00e3o classes especiais java que recebem e respondem a requisi\u00e7\u00f5es do protocolo HTTP.<\/li>\n
  • JDBC (Java Database Connectivity) \u00e9 a forma padr\u00e3o de acesso a Banco de dados em Java<\/li>\n
  • PostgreSQL \u00e9 um banco de dados relacional gratuito e de grande aceita\u00e7\u00e3o no mercado e com caracter\u00edsticas muito boas para sistemas na Internet<\/li>\n
  • Padr\u00e3o MVC – Model View Controller \u00e9 um padr\u00e3o de projeto que divide nossa aplica\u00e7\u00e3o em v\u00e1rias camadas<\/li>\n

    <\/p>\n

    1. Introdu\u00e7\u00e3o<\/h2>\n

    Este exemplo come\u00e7a uma p\u00e1gina inicial index.jsp que exibe as informa\u00e7\u00f5es de funcionamento do projeto. Ao clicar na imagem principal \u00e9 exibido o menu.jsp.
    \nEsta p\u00e1gina tem a op\u00e7\u00e3o de listagem de alunos ou realizar a manuten\u00e7\u00e3o (Inclus\u00e3o, altera\u00e7\u00e3o, consulta ou exclus\u00e3o de um Aluno). Se escolhermos a op\u00e7\u00e3o de cadastro ser\u00e1 exibida a tela de manuten\u00e7\u00e3o.
    \nVeja os campos dispon\u00edveis.<\/p>\n

    \"Exemplo_completo<\/a>
    \n img 1 – Vis\u00e3o macro do nosso projeto<\/p>\n

    Para maior facilidade as classes e p\u00e1ginas tamb\u00e9m foram comentadas para auxiliar no entendimento e estudo do c\u00f3digo.<\/p>\n

    \r\n    Voc\u00ea dever\u00e1 ter conhecimento pr\u00e9vio de Aplica\u00e7\u00e3o Web Java e utiliza\u00e7\u00e3o do Tomcat. \r\nCaso ainda n\u00e3o tenha, acesse os links informados no final deste artigo.\r\n<\/pre>\n

    2 . Cria\u00e7\u00e3o da tabela no banco de dados <\/H2><\/p>\n

    Script de cria\u00e7\u00e3o da tabela no Banco de dados:<\/p>\n

    \r\nCREATE TABLE  IF NOT EXISTS tbaluno(\r\n  matricula bigint NOT NULL,  \r\n  nome character varying(255),\r\n  telefone character varying(255),  \r\n  email character varying(255),\r\n  datacadastro date,\r\n  CONSTRAINT tbaluno_pkey PRIMARY KEY (matricula)\r\n);\r\n<\/pre>\n

    \u00c9 criado o comando que gera a tabela caso ela ainda n\u00e3o exista.<\/p>\n

    3 . Constru\u00e7\u00e3o do projeto <\/H2>
    \n Para come\u00e7ar vamos construir a estrutura do nosso projeto. Ao final deste tutorial o seu projeto deve estar como mostrado na imagem abaixo:<\/p>\n

    \"Exemplo_completo<\/a><\/p>\n

    Nela temos o nome do projeto (AcademicNetWeb)
    \n Abaixo os n\u00f3s mais importantes s\u00e3o:
    \n -> Java Resources (src) (Aqui teremos os c\u00f3digos fontes arquivos .java)
    \n -> WebContent (Aqui ficam os arquivos web JSPs, imagens, JavaScript).<\/p>\n

    Para criar o projeto, no Eclipse, acesse o menu File >> Other…>> Na tela que aparece escolha Web >> Dynamic Web Project.
    \nD\u00ea o nome de “AcademicNetWeb” … Next >> Next … Na \u00faltima tela Selecione a opi\u00e7\u00e3o “Generate web.xml deployment descriptor”. >> Finish <\/b><\/p>\n

    Para saber mais sobre cria\u00e7\u00e3o de projeto web no Eclipse Clique Aqui<\/a><\/p>\n

    Vamos criar a classe de entidade Aluno. O conte\u00fado deve ser o seguinte:<\/p>\n

    \r\npackage br.com.feltex.entidade;\r\n\r\nimport java.io.Serializable;\r\nimport java.util.Date;\r\n\r\n\/**\r\n * \r\n * Classe de entidade que possui os atributos do aluno \r\n *\r\n *\/\r\npublic class Aluno implements Serializable {\r\n\tprivate static final long serialVersionUID = -309513637403441918L;\r\n\r\n\tprivate Long matricula;\r\n\r\n\tprivate String nome;\r\n\r\n\tprivate String telefone;\r\n\r\n\tprivate String email;\r\n\r\n\tprivate Date dataCadastro;\r\n\r\n\tpublic Aluno() {}\r\n\r\n\tpublic Aluno(Long matricula) {\r\n\t\tsuper();\r\n\t\tthis.matricula = matricula;\r\n\t}\r\n\r\n\tpublic Aluno(Long matricula, String nome) {\r\n\t\tsuper();\r\n\t\tthis.matricula = matricula;\r\n\t\tthis.nome = nome;\r\n\t}\r\n\r\n\tpublic Date getDataCadastro() {\r\n\t\treturn dataCadastro;\r\n\t}\r\n\r\n\tpublic String getEmail() {\r\n\t\treturn email;\r\n\t}\r\n\r\n\tpublic Long getMatricula() {\r\n\t\treturn matricula;\r\n\t}\r\n\r\n\tpublic String getNome() {\r\n\t\treturn nome;\r\n\t}\r\n\r\n\tpublic String getTelefone() {\r\n\t\treturn telefone;\r\n\t}\r\n\r\n\tpublic void setDataCadastro(Date dataCadastro) {\r\n\t\tthis.dataCadastro = dataCadastro;\r\n\t}\r\n\r\n\tpublic void setEmail(String email) {\r\n\t\tthis.email = email;\r\n\t}\r\n\r\n\tpublic void setMatricula(Long matricula) {\r\n\t\tthis.matricula = matricula;\r\n\t}\r\n\r\n\tpublic void setNome(String nome) {\r\n\t\tthis.nome = nome;\r\n\t}\r\n\r\n\tpublic void setTelefone(String telefone) {\r\n\t\tthis.telefone = telefone;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\treturn \"Aluno [matricula=\" + matricula + \", nome=\" + nome\r\n\t\t\t\t+ \", telefone=\" + telefone + \", email=\" + email\r\n\t\t\t\t+ \", dataCadastro=\" + dataCadastro + \"]\";\r\n\t}\r\n}\r\n<\/pre>\n

    A Classe DAO \u00e9 a classe que utilizamos para conectar como Banco de Dados PostgreSQL.<\/p>\n

    \r\n\r\npackage br.com.feltex.dao;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.DriverManager;\r\n\r\n\/**\r\n * Classe respons\u00e1vel pela Conex\u00e3o com o Banco de dados. \u00c9 utilizada por outras\r\n * classes de persist\u00eancia de dados.\r\n * \r\n *\/\r\npublic class DAO {\r\n\tpublic Connection getConexao() {\r\n\t\tConnection conexao = null;\r\n\t\tString usuario = \"postgres\";\r\n\t\tString senha = \"teco01\";\r\n\t\tString nomeBancoDados = \"bdacademicnet\";\r\n\r\n\t\ttry {\r\n\t\t\tClass.forName(\"org.postgresql.Driver\");\r\n\t\t\tconexao = DriverManager.getConnection(\"jdbc:postgresql:\/\/localhost:5432\/\" + nomeBancoDados,\r\n\t\t\t\t\t usuario, senha);\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\treturn conexao;\r\n\t}\r\n}\r\n<\/pre>\n

    A classe AlunoDAO<\/b> \u00e9 respons\u00e1vel por realizar todas as opera\u00e7\u00f5es com Banco de dados.
    \nNela encontramos os m\u00e9todos de persist\u00eancia (
    \nalterar – altera\u00e7\u00e3o de um registro no banco de dados
    \nexcluir – exclui um registro no banco de dados
    \nexiste – Verifica a exist\u00eancia de uma matr\u00edcula informada no banco de dados
    \ninserir – incluir\u00e1 os dados de um aluno no banco de dados
    \nlistar – retorna todos os registros existentes no banco de dados
    \nconsultar – retorna um registro identificado com a matr\u00edcula informada
    \n)<\/p>\n

    \r\npackage br.com.feltex.dao;\r\n\r\nimport java.sql.Connection;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.Statement;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport br.com.feltex.entidade.Aluno;\r\n\r\n\/**\r\n * \r\n * Classe de Persist\u00eancia de dados dos objetos de Aluno\r\n * \u00e9 \"filha\" da Classe DAO. \r\n *\r\n *\/\r\n\r\npublic class AlunoDAO extends DAO {\r\n\r\n\tpublic void alterar(Aluno aluno) {\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\r\n\t\t\tPreparedStatement pstmt = conexao\r\n\t\t\t\t\t.prepareStatement(\"Update tbaluno SET nome = ?, telefone = ?, email = ?, datacadastro = ?\"\r\n\t\t\t\t\t\t\t+ \" WHERE matricula = ? \");\r\n\t\t\tpstmt.setString(1, aluno.getNome());\r\n\t\t\tpstmt.setString(2, aluno.getTelefone());\r\n\t\t\tpstmt.setString(3, aluno.getEmail());\r\n\t\t\tpstmt.setDate(4, new java.sql.Date(aluno.getDataCadastro().getTime()));\r\n\t\t\tpstmt.setLong(5, aluno.getMatricula());\r\n\t\t\tpstmt.execute();\r\n\t\t\tpstmt.close();\r\n\t\t\tconexao.close();\r\n\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic void excluir(Aluno aluno) {\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\t\t\tPreparedStatement pstm = conexao\r\n\t\t\t\t\t.prepareStatement(\"Delete from\ttbaluno where matricula = ? \");\r\n\t\t\tpstm.setLong(1, aluno.getMatricula());\r\n\t\t\tpstm.execute();\r\n\t\t\tpstm.close();\r\n\t\t\tconexao.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic boolean existe(Aluno aluno) {\r\n\t\tboolean achou = false;\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\t\t\tPreparedStatement pstm = conexao\r\n\t\t\t\t\t.prepareStatement(\"Select * from tbaluno where matricula =\t?\");\r\n\t\t\tpstm.setLong(1, aluno.getMatricula());\r\n\t\t\tResultSet rs = pstm.executeQuery();\r\n\t\t\tif (rs.next()) {\r\n\t\t\t\tachou = true;\r\n\t\t\t}\r\n\t\t\tpstm.close();\r\n\t\t\tconexao.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\treturn achou;\r\n\t}\r\n\r\n\tpublic void inserir(Aluno aluno) {\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\t\t\tPreparedStatement pstm = conexao\r\n\t\t\t\t\t.prepareStatement(\"Insert into\ttbaluno (matricula, nome, telefone, email, datacadastro) values\t(?,?,?,?,?)\");\r\n\t\t\tpstm.setLong(1, aluno.getMatricula());\r\n\t\t\tpstm.setString(2, aluno.getNome());\r\n\t\t\tpstm.setString(3, aluno.getTelefone());\r\n\t\t\tpstm.setString(4, aluno.getEmail());\r\n\t\t\tpstm.setDate(5, new java.sql.Date(aluno.getDataCadastro()\r\n\t\t\t\t\t.getTime()));\r\n\t\t\tpstm.execute();\r\n\t\t\tpstm.close();\r\n\t\t\tconexao.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic List listar() {\r\n\t\tList lista = new ArrayList<>();\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\t\t\tStatement stm = conexao.createStatement();\r\n\t\t\tResultSet rs = stm.executeQuery(\"Select * from tbaluno\");\r\n\t\t\twhile (rs.next()) {\r\n\t\t\t\tAluno aluno = new Aluno();\r\n\t\t\t\taluno.setMatricula(rs.getLong(\"matricula\"));\r\n\t\t\t\taluno.setNome(rs.getString(\"nome\"));\r\n\t\t\t\taluno.setTelefone(rs.getString(\"telefone\"));\r\n\t\t\t\taluno.setEmail(rs.getString(\"email\"));\r\n\t\t\t\taluno.setDataCadastro(new java.util.Date(rs.getDate(\"datacadastro\").getTime()));\r\n\t\t\t\tlista.add(aluno);\r\n\t\t\t}\r\n\t\t\tstm.close();\r\n\t\t\tconexao.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\treturn lista;\r\n\t}\r\n\r\n\tpublic Aluno consultar(Aluno aluno) {\r\n\t\ttry {\r\n\t\t\tConnection conexao = getConexao();\r\n\t\t\tPreparedStatement pstm = conexao\r\n\t\t\t\t\t.prepareStatement(\"Select * from tbaluno where matricula =\t?\");\r\n\t\t\tpstm.setLong(1, aluno.getMatricula());\r\n\t\t\tResultSet rs = pstm.executeQuery();\r\n\t\t\tif (rs.next()) {\r\n\t\t\t\taluno.setMatricula(rs.getLong(\"matricula\"));\r\n\t\t\t\taluno.setNome(rs.getString(\"nome\"));\r\n\t\t\t\taluno.setTelefone(rs.getString(\"telefone\"));\r\n\t\t\t\taluno.setEmail(rs.getString(\"email\"));\r\n\t\t\t\taluno.setDataCadastro(new java.util.Date(rs.getDate(\"datacadastro\").getTime()));\r\n\t\t\t}\r\n\t\t\tpstm.close();\r\n\t\t\tconexao.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\treturn aluno;\r\n\t}\r\n}\r\n<\/pre>\n

    AlunoServlet<\/b> a principal classe do nosso projeto. Ela \u00e9 a controladora da navega\u00e7\u00e3o. Todas as requisi\u00e7\u00f5es de acesso ao banco de dados, controle de navega\u00e7\u00e3o, leitura de dados da tela ou envio para o destino de erro ou sucesso \u00e9 responsabilidade desta classe. Seguindo o padr\u00e3o MVC ela \u00e9 o Contoller.<\/p>\n

    \r\npackage br.com.feltex.servlet;\r\n\r\nimport java.io.IOException;\r\nimport java.text.DateFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport javax.servlet.RequestDispatcher;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport br.com.feltex.dao.AlunoDAO;\r\nimport br.com.feltex.entidade.Aluno;\r\n\r\n@WebServlet(\"\/AlunoServlet\")\r\npublic class AlunoServlet extends HttpServlet {\r\n\tprivate static final long serialVersionUID = 1L;\r\n\r\n\tprotected void doGet(HttpServletRequest request,\r\n\t\t\tHttpServletResponse response) throws ServletException, IOException {\r\n\t\tdoPost(request, response);\r\n\t}\r\n\r\n\tprotected void doPost(HttpServletRequest request,\r\n\t\t\tHttpServletResponse response) throws ServletException, IOException {\r\n\t\tString acao = request.getParameter(\"acao\");\r\n\t\tString destino = \"sucesso.jsp\";\r\n\t\tString mensagem = \"\";\r\n\t\tList lista = new ArrayList<>();\r\n\r\n\t\t\r\n\t\tAluno aluno = new Aluno();\r\n\t\tAlunoDAO dao = new AlunoDAO();\r\n\t\t\r\n\t\ttry {\r\n\r\n\t\t\t\/\/Se a a\u00e7\u00e3o for DIFERENTE de Listar s\u00e3o lidos os dados da tela\r\n\t\t\tif (!acao.equalsIgnoreCase(\"Listar\")) {\r\n\t\t\t\taluno.setMatricula(Long.parseLong(request.getParameter(\"matricula\")));\r\n\t\t\t\taluno.setNome(request.getParameter(\"nome\"));\r\n\t\t\t\taluno.setTelefone(request.getParameter(\"telefone\"));\r\n\t\t\t\taluno.setEmail(request.getParameter(\"email\"));\r\n\t\t\t\t\r\n\t\t\t\t\/\/Faz a leitura da data de cadastro. Caso ocorra um erro de formata\u00e7\u00e3o\r\n\t\t\t\t\/\/ o sistema utilizar\u00e1 a data atual\r\n\t\t\t\ttry {\r\n\t\t\t\t\tDateFormat df = new SimpleDateFormat(\"dd\/MM\/yyyy\");\t\t\t\t\t\r\n\t\t\t\t\taluno.setDataCadastro(df.parse(request.getParameter(\"dataCadastro\")));\r\n\t\t\t\t} catch (Exception e) {\r\n\t\t\t\t\taluno.setDataCadastro(new Date());\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif (acao.equalsIgnoreCase(\"Incluir\")) {\r\n\t\t\t\t\/\/ Verifica se a matr\u00edcula informada j\u00e1 existe no Banco de Dados\r\n\t\t\t\t\/\/ Se existir enviar uma mensagem sen\u00e3o faz a inclus\u00e3o\r\n\t\t\t\tif (dao.existe(aluno)) {\r\n\t\t\t\t\tmensagem = \"Matr\u00edcula informada j\u00e1 existe!\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdao.inserir(aluno);\r\n\t\t\t\t}\r\n\t\t\t} else if (acao.equalsIgnoreCase(\"Alterar\")) {\r\n\t\t\t\tdao.alterar(aluno);\r\n\t\t\t} else if (acao.equalsIgnoreCase(\"Excluir\")) {\r\n\t\t\t\tdao.excluir(aluno);\r\n\t\t\t} else if (acao.equalsIgnoreCase(\"Consultar\")) {\r\n\t\t\t\trequest.setAttribute(\"aluno\", aluno);\r\n\t\t\t\taluno = dao.consultar(aluno);\r\n\t\t\t\tdestino = \"aluno.jsp\";\r\n\t\t\t}\r\n\t\t} catch (Exception e) {\r\n\t\t\tmensagem += e.getMessage();\r\n\t\t\tdestino = \"erro.jsp\";\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ Se a mensagem estiver vazia significa que houve sucesso!\r\n\t\t\/\/ Sen\u00e3o ser\u00e1 exibida a tela de erro do sistema.\r\n\t\tif (mensagem.length() == 0) {\r\n\t\t\tmensagem = \"Aluno Cadastrado com sucesso!\";\r\n\t\t} else {\r\n\t\t\tdestino = \"erro.jsp\";\r\n\t\t}\r\n\r\n\t\t\/\/ Lista todos os registros existente no Banco de Dados\r\n\t\tlista = dao.listar();\r\n\t\trequest.setAttribute(\"listaAluno\", lista);\r\n\t\trequest.setAttribute(\"mensagem\", mensagem);\r\n\t\t\r\n\r\n\t\t\/\/O sistema \u00e9 direcionado para a p\u00e1gina \r\n\t\t\/\/sucesso.jsp Se tudo ocorreu bem\r\n\t\t\/\/erro.jsp se houver algum problema.\r\n\t\tRequestDispatcher rd = request.getRequestDispatcher(destino);\r\n\t\trd.forward(request, response);\r\n\t}\r\n}\r\n<\/pre>\n

    4. Cria\u00e7\u00e3o das p\u00e1ginas <\/h2>\n

    index.jsp<\/b> P\u00e1gina inicial do nosso projeto. Utilizamos aqui conte\u00fado HTML5 puro. Uma p\u00e1gina simples, sem conte\u00fado din\u00e2mico e que possui os links para o menu da aplica\u00e7\u00e3o quando clicamos na imagem.<\/p>\n

    \r\n\r\n\r\n\r\nP\u00e1gina Inicial<\/title>\r\n<\/head>\r\n<body>\r\n\t<div align=\"center\">\r\n\t<H1> Seja bem vindo ao sistema AcademicNet!<\/H1>\r\n\t<H2>\r\n\t  Nesta vers\u00e3o utilizaremos as tecnologias: JSP + JSTL + Servlet + JDBC + PostGreSQL.\r\n\t<\/H2>\r\n\t   <a href=\"menu.jsp\">\r\n\t    <img decoding=\"async\" src=\"imagem\/AcemicNet.png\">\r\n\t    <\/a>\t\t  \r\n\t<\/div>\t\r\n <a href=\"http:\/\/www.feltex.com.br\" target=\"_blank\"> http:\/\/www.feltex.com.br<\/a>\t\t\t\r\n<\/body>\r\n<\/html>\r\n\r\n<\/pre>\n<p>  <b>menu.jsp<\/b>  P\u00e1gina que conter\u00e1 as op\u00e7\u00f5es de cadastros no nosso sistema. Tamb\u00e9m uma p\u00e1gina simples, sem conte\u00fado din\u00e2mico e que possui os links para o menu da aplica\u00e7\u00e3o quando clicamos nos links.  O primeiro chamar\u00e1 a p\u00e1gina aluno.jsp. O Segundo chamar\u00e1 o Servlet AlunoServlet com a op\u00e7\u00e3o de listar todos os usu\u00e1rios cadastrados no Banco de Dados.<\/p>\n<pre lang=\"java\" line=\"1\">\r\n <!DOCTYPE html>\r\n<html lang=\"pt\">\r\n<head>\r\n<title>P\u00e1gina Inicial<\/title>\r\n<\/head>\r\n<body>\r\n\t<div align=\"center\">\r\n\t\t<H1>Seja bem vindo ao sistema AcademicNet!<\/H1>\r\n\t\t<a href=\"aluno.jsp\">Manter Aluno<\/a><br>\r\n\t\t<a href=\"AlunoServlet?acao=Listar\">Listar Alunos<\/a><br>\r\n\t<\/div>\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<p>  <b>aluno.jsp<\/b> P\u00e1gina que cont\u00e9m c\u00f3digo din\u00e2mico. Quando encontramos a marca\u00e7\u00e3o “${…}” significa que \u00e9 um conte\u00fado que deve ser recebido pela p\u00e1gina e que ser\u00e1 exibido. Nos campos de texto recebemos os dados de aluno, veja o exemplo: value=”${aluno.nome}” que recebe o campo nome do aluno.<\/p>\n<p>Nesta p\u00e1gina utilizamos HTML5. Ent\u00e3o podemos ver no campo matr\u00edcula a palavra <i>required<\/i>. Isso informa que este campo \u00e9 obrigat\u00f3rio. N\u00e3o ser\u00e1 poss\u00edvel enviar os dados ao servidor sem o preenchimento dele.<\/p>\n<p>   Na linha abaixo definimos que o m\u00e9todo de envio dos dados para o servidor ser\u00e1 “post” e o destino no servidor ser\u00e1 a nossa Classe Servlet: “AlunoServlet”<\/p>\n<pre lang=\"java\" line=\"1\">\r\n  <form method=\"post\" action=\"AlunoServlet\">\r\n<\/pre>\n<p>  O Atributo “autofocus” no campo nome determina que este campo receber\u00e1 o cursor assim que a p\u00e1gina for carregada no seu browser.<br \/>\n  O atributo “placeholder” \u00e9 o valor que ser\u00e1 exibido nos campos quando eles estiverem vazios. Isso serve para informar ao usu\u00e1rio um valor poss\u00edvel a ser utilizado.<\/p>\n<p>  As linhas<\/p>\n<pre lang=\"java\" line=\"1\">\r\n  <input type=\"submit\" value=\"Enviar\"> \r\n  <input type=\"reset\" value=\"Limpar\"> <br \/>\r\n<\/pre>\n<p>  Informam que temos um bot\u00e3o “submit” que envia os dados ao servidor e tamb\u00e9m um bot\u00e3o “reset” que limpa os valores exibidos nos campos do formul\u00e1rio.<\/p>\n<pre lang=\"java\" line=\"1\">\r\n<!DOCTYPE html>\r\n<html lang=\"pt\">\r\n<head>\r\n<title>Cadastro de Aluno<\/title>\r\n<\/head>\r\n<body>\r\n\t<div align=\"center\">\r\n\t\t<form method=\"post\" action=\"AlunoServlet\">\r\n\t\t\t<fieldset>\r\n\t\t\t\t<legend>Cadastro de Alunos<\/legend>\r\n\t\t\t\t<label>Matr\u00edcula: <\/label><input name=\"matricula\" required\r\n\t\t\t\t    value=\"${aluno.matricula}\"\r\n\t\t\t\t\tplaceholder=\"2236541\" \/><br \/> \r\n\t\t\t\t<label>Name:<\/label><input\r\n\t\t\t\t\tname=\"nome\" autofocus=\"autofocus\" placeholder=\"Nome\"  value=\"${aluno.nome}\"\/><br \/>\r\n\t\t\t\t\t\r\n\t\t\t\t <label>Telefone:<\/label><input\r\n\t\t\t\t\ttype=\"tel\" name=\"telefone\" placeholder=\"9999-9999\" value=\"${aluno.telefone}\" \/><br \/>\r\n\t\t\t\t <label>Email:<\/label><input\r\n\t\t\t\t\ttype=\"email\" name=\"email\" placeholder=\"andre@feltex.com.br\"  value=\"${aluno.email}\"\/><br \/>\t\r\n\t\t\t\t<label>Data Cadastro:<\/label><input type=\"date\" name=\"dataCadastro\" value=\"${aluno.dataCadastro}\"\r\n\t\t\t\t\tplaceholder=\"10\/10\/2014\" \/><br \/> <label>A\u00e7\u00e3o<\/label> <select\r\n\t\t\t\t\tname=\"acao\" required>\r\n\t\t\t\t\t<option selected value=\"Incluir\">Incluir<\/option>\r\n\t\t\t\t\t<option value=\"Alterar\">Alterar<\/option>\r\n\t\t\t\t\t<option value=\"Excluir\">Excluir<\/option>\r\n\t\t\t\t\t<option value=\"Consultar\">Consultar<\/option>\r\n\t\t\t\t<\/select><br \/> <input type=\"submit\" value=\"Enviar\"> <input\r\n\t\t\t\t\ttype=\"reset\" value=\"Limpar\"> <br \/>\r\n\t\t\t<\/fieldset>\r\n\t\t<\/form>\r\n\t<\/div>\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<p> <b> alunoLista.jsp<\/b> \u00c9 uma p\u00e1gina din\u00e2mica que utilizamos v\u00e1rios recursos de JSTL. Nas primeiras linhas s\u00e3o declaradas as tags que ser\u00e3o utilizadas. Isso \u00e9 feito com as marca\u00e7\u00f5es<br \/>\n“@ taglib” para cada linha dessa h\u00e1 um “prefix” que ser\u00e1 utilizado como abrevia\u00e7\u00e3o no uso da TagLib.<\/p>\n<p>A tag a seguir  <c:forEach var=\"aluno\" items=\"${listaAluno}\"> realiza um loop. Neste caso \u00e9 lido o atributo “listaAluno” que foi enviado do AlunoServlet e ser\u00e1 realizado um loop adicionando cada elemento a vari\u00e1vel “aluno”.<\/p>\n<p> J\u00e1 na linha  <b>“<fmt:formatDate value=\"${aluno.dataCadastro}\" type=\"both\" pattern=\"dd\/MM\/yyyy\"\/>“<\/b> utilizamos TagLib para realizar a formata\u00e7\u00e3o de data no padr\u00e3o dia\/m\u00eas\/ano (10\/10\/2014).<\/p>\n<pre lang=\"java\" line=\"1\">\r\n<!DOCTYPE html>\r\n<%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/functions\" prefix=\"fn\"%>\r\n<%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/fmt\" prefix=\"fmt\"%>\r\n<%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" prefix=\"c\"%>\r\n<html lang=\"pt\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=ISO-8859-1\">\r\n<title>Lista de Alunos<\/title>\r\n<\/head>\r\n<body>\r\n\t<div align=\"center\">\r\n\t\t<P>Lista de Alunos<\/P>\r\n\t\t<table border=\"1\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Matricula<\/td>\r\n\t\t\t\t<td>Nome<\/td>\r\n\t\t\t\t<td>Telefone<\/td>\r\n\t\t\t\t<td>Data Cadastro<\/td>\r\n\t\t\t\t<td>Comandos<\/td>\r\n\t\t\t<\/tr>\r\n\t\t\t<c:forEach var=\"aluno\" items=\"${listaAluno}\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>${aluno.matricula}<\/td>\r\n\t\t\t\t\t<td>${aluno.nome}<\/td>\r\n\t\t\t\t\t<td>${aluno.telefone}<\/td>\r\n\t\t\t\t\t<td><fmt:formatDate value=\"${aluno.dataCadastro}\" type=\"both\" pattern=\"dd\/MM\/yyyy\"\/>  \r\n\t\t\t\t\t<td><a href=\"AlunoServlet?acao=Excluir&matricula=${aluno.matricula}\">Excluir<\/a><\/td>\r\n\t\t\t\t<\/tr>\r\n\t\t\t<\/c:forEach>\r\n\t\t<\/table>\r\n\t\t<c:if test=\"${fn:length(listaAluno) > 0}\">\r\n   \t\tExistem ${fn:length(listaAluno)} alunos!\r\n \t\t<\/c:if><br> \t\t\r\n\t<\/div>\r\n\t<a href=\"menu.jsp\">Voltar<\/a>\r\n\t\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<p>  <b>sucesso.jsp<\/b> Esta p\u00e1gina \u00e9 exibida quando h\u00e1 uma atualiza\u00e7\u00e3o bem sucedida no banco de dados. \u00c9 feito o uso de JSTL aqui.<br \/>\nTemos o uso do <c:out value=\"${mensagem}\" \/> que \u00e9 usado para exibir o atributo mensagem que recebido do AlunoServlet. Na linh “<jsp:include page=\"alunoLista.jsp\"\/>”<br \/>\n\u00e9 realizado um include din\u00e2mico da p\u00e1gina de lista de alunos. Isso significa que ser\u00e1 exibida a listagem de alunos ao carregar esta p\u00e1gina.<\/p>\n<pre lang=\"java\" line=\"1\">\r\n <!DOCTYPE html>\r\n<%@ taglib uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" prefix=\"c\"%>\r\n<html lang=\"pt\">\r\n<head>\r\n<title>P\u00e1gina de Sucesso<\/title>\r\n<\/head>\r\n<body>\r\n<H1>Mensagem JSTL:\t<c:out value=\"${mensagem}\" \/><\/H1>\t\r\n<jsp:include page=\"alunoLista.jsp\"\/>\r\n<\/body>\r\n<\/html>\r\n  <\/pre>\n<p>    A p\u00e1gina <b>erro.jsp<\/b> \u00e9 respons\u00e1vel por receber a vari\u00e1vel “mensagem” e exibi-la. Esta p\u00e1gina \u00e9 mostrada sempre que h\u00e1 um problema de atualiza\u00e7\u00e3o de dados dos no Banco de dados.<\/p>\n<pre lang=\"java\" line=\"1\">\r\n\r\n<!DOCTYPE html>\r\n<html lang=\"pt\">\r\n<head>\r\n<title>Mensagens de Erro<\/title>\r\n<\/head>\r\n<body>Verifique o erro: ${mensagem}\r\n\r\n<a href=\"menu.jsp\">Voltar<\/a>\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<p>   Por fim temos o nosso arquivo <b>web.xml<\/b> que \u00e9 bem simples para o nosso projeto. Ele apenas define qual ser\u00e1 a p\u00e1gina inicial da nossa aplica\u00e7\u00e3o. Atualmente \u00e9  index.jsp. Caso voc\u00ea queira uma p\u00e1gina diferente, por exemplo, a de login. basta alterar a linha “<welcome-file>index.jsp<\/welcome-file>” para <welcome-file>menu.jsp<\/welcome-file><\/p>\n<pre lang=\"java\" line=\"1\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\" xmlns:web=\"http:\/\/java.sun.com\/xml\/ns\/javaee\"\r\n\txsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_3_0.xsd\"\r\n\tid=\"WebApp_ID\" version=\"3.0\">\r\n\t<welcome-file-list>\r\n\t\t<welcome-file>index.jsp<\/welcome-file>\r\n\t<\/welcome-file-list>\r\n<\/web-app>\r\n<\/pre>\n<p>  Observe que temos tamb\u00e9m, nas pasta WEB-INF\\lib os arquivos:<br \/>\n   jstl.jar e standard.jar (Cont\u00e9m as tags que precisamos para uso de JSTL)<br \/>\n   postgresql-9.3-1100.jdbc4.jar (Driver para realizar a conex\u00e3o como Banco de dados PostgreSQL)<\/p>\n<p> Esses arquivos s\u00e3o necess\u00e1rio para que o nosso projeto funcione.<\/p>\n<p> Deixei dispon\u00edvel o projeto completo com o c\u00f3digo fonte para auxiliar a todos no processo de aprendizado. Para baixar: <a href=\"https:\/\/www.feltex.com.br\/felix\/java\/exemplos\/AcademicNetWeb.war\" target=\"_blank\">Clique aqui<\/a><\/p>\n<h2>Conclus\u00e3o <\/h2>\n<p>   Este \u00e9 um projeto simples que explica os conceitos necess\u00e1rios para constru\u00e7\u00e3o de um aplicativo completo para Java Web.<br \/>\n  Ele pode ser utilizado em qualquer Servidor Web (JBoss, Tomcat, Websphere, Weblogic), pois n\u00e3o h\u00e1 nenhuma configura\u00e7\u00e3o espec\u00edfica para uma implementa\u00e7\u00e3o de servidor.<br \/>\n  Para utilizar este projeto com outros bancos de Dados (MySQL, SQL Server, Oracle, DB2) basta alterar a forma de conex\u00e3o na classe “DAO”.<\/p>\n<h2>Links relacionados<\/h2>\n<p>Recomendo que leia: <a href=\"https:\/\/www.feltex.com.br\/felix\/gerenciar-transacao-jpa-via-filtro-projeto-web\/\" title=\"Como gerenciar a transa\u00e7\u00e3o JPA com Hibernate via Filtro em projeto Web\">Como gerenciar a transa\u00e7\u00e3o JPA com Hibernate via Filtro em projeto Web<\/a><\/p>\n<p>Leia tamb\u00e9m: <a href=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-com-jsf-primefaces-ejb-hibernate-mysql-jms-topic\/\" title=\"Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)\">Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)<\/a><\/p>\n<p>Voc\u00ea ir\u00e1 gostar:<a href=\"http:\/\/docs.oracle.com\/javaee\/6\/tutorial\/doc\/bnciy.html\" target=\"_blank\">Bean Transaction Management<\/a><br \/>\n<a href=\"http:\/\/docs.oracle.com\/javaee\/6\/tutorial\/doc\/bnafd.html\" target=\"_blank\"> Java Web <\/a><br \/>\n<a href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/jdbc\/\" target=\"_blank\">JDBC<\/a><\/p>\n<p><a href=\"https:\/\/www.feltex.com.br\/felix\/projetos-completos\/\" title=\"Projetos Completos em Java \u2013 aprenda na pr\u00e1tica\" target=\"_blank\">Projetos Completos em Java \u2013 aprenda na pr\u00e1tica<\/a><\/p>\n<p><a href=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsf-primefaces-ejb-hibernate-mysql-jms\/\" title=\"Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS\" target=\"_blank\">Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS<\/a><\/p>\n<p><a href=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-com-jsf-primefaces-ejb-hibernate-mysql-jms-topic\/\" title=\"Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)\" target=\"_blank\">Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)<\/a><\/p>\n<p>Abra\u00e7os e bons estudos.<br \/>\n<H2>N\u00e3o esque\u00e7a de curtir este post nas rede sociais. D\u00ea a sua contribui\u00e7\u00e3o social e ajude o autor:<\/H2><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Amigos, Hoje criaremos um projeto completo com as tecnologias java: JSP + JSTL + Servlet + JDBC + PostgreSQL. Claro que iniciaremos com uma breve descri\u00e7\u00e3o de cada uma delas. Tecnologias utilizadas no exemplo JSP (Java Server Page) \u00e9 …<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/\"> <span class=\"screen-reader-text\">Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL<\/span> Read More »<\/a><\/p>\n<p><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":1718,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[16,1,4,14,18],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL<\/title>\n<meta name=\"description\" content=\"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\" \/>\n<meta property=\"og:description\" content=\"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"Aprenda Java\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/feltex.br\" \/>\n<meta property=\"article:published_time\" content=\"2014-03-17T02:38:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-12-30T10:44:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png\" \/>\n\t<meta property=\"og:image:width\" content=\"256\" \/>\n\t<meta property=\"og:image:height\" content=\"256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 F\u00e9lix\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/#website\",\"url\":\"https:\/\/www.feltex.com.br\/felix\/\",\"name\":\"Aprenda Java\",\"description\":\"Cursos de java, SQL e Engenharia de Software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.feltex.com.br\/felix\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png\",\"contentUrl\":\"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png\",\"width\":256,\"height\":256},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#webpage\",\"url\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/\",\"name\":\"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\",\"isPartOf\":{\"@id\":\"https:\/\/www.feltex.com.br\/felix\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#primaryimage\"},\"datePublished\":\"2014-03-17T02:38:29+00:00\",\"dateModified\":\"2014-12-30T10:44:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.feltex.com.br\/felix\/#\/schema\/person\/1e49f842c6254b4561b66ccf573c2069\"},\"description\":\"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\",\"breadcrumb\":{\"@id\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/#\/schema\/person\/1e49f842c6254b4561b66ccf573c2069\",\"name\":\"Andr\\u00e9 F\\u00e9lix\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.feltex.com.br\/felix\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d2d9cc82cab40245e6f803982b1448e6?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d2d9cc82cab40245e6f803982b1448e6?s=96&r=g\",\"caption\":\"Andr\\u00e9 F\\u00e9lix\"},\"sameAs\":[\"http:\/\/www.feltex.com.br\"],\"url\":\"https:\/\/www.feltex.com.br\/felix\/author\/andre.felix\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","description":"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/","og_locale":"pt_BR","og_type":"article","og_title":"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","og_description":"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","og_url":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/","og_site_name":"Aprenda Java","article_publisher":"https:\/\/www.facebook.com\/feltex.br","article_published_time":"2014-03-17T02:38:29+00:00","article_modified_time":"2014-12-30T10:44:54+00:00","og_image":[{"width":256,"height":256,"url":"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png","type":"image\/png"}],"twitter_misc":{"Escrito por":"Andr\u00e9 F\u00e9lix","Est. tempo de leitura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/www.feltex.com.br\/felix\/#website","url":"https:\/\/www.feltex.com.br\/felix\/","name":"Aprenda Java","description":"Cursos de java, SQL e Engenharia de Software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.feltex.com.br\/felix\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"ImageObject","@id":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#primaryimage","inLanguage":"pt-BR","url":"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png","contentUrl":"https:\/\/www.feltex.com.br\/felix\/wp-content\/uploads\/2014\/03\/Projeto.png","width":256,"height":256},{"@type":"WebPage","@id":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#webpage","url":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/","name":"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","isPartOf":{"@id":"https:\/\/www.feltex.com.br\/felix\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#primaryimage"},"datePublished":"2014-03-17T02:38:29+00:00","dateModified":"2014-12-30T10:44:54+00:00","author":{"@id":"https:\/\/www.feltex.com.br\/felix\/#\/schema\/person\/1e49f842c6254b4561b66ccf573c2069"},"description":"Exemplo Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL","breadcrumb":{"@id":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.feltex.com.br\/felix\/exemplo-completo-jsp-jstl-servlet-jdbc-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Exemplo completo com JSP JSTL Servlet JDBC PostGreSQL"}]},{"@type":"Person","@id":"https:\/\/www.feltex.com.br\/felix\/#\/schema\/person\/1e49f842c6254b4561b66ccf573c2069","name":"Andr\u00e9 F\u00e9lix","image":{"@type":"ImageObject","@id":"https:\/\/www.feltex.com.br\/felix\/#personlogo","inLanguage":"pt-BR","url":"https:\/\/secure.gravatar.com\/avatar\/d2d9cc82cab40245e6f803982b1448e6?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d2d9cc82cab40245e6f803982b1448e6?s=96&r=g","caption":"Andr\u00e9 F\u00e9lix"},"sameAs":["http:\/\/www.feltex.com.br"],"url":"https:\/\/www.feltex.com.br\/felix\/author\/andre.felix\/"}]}},"_links":{"self":[{"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/posts\/447"}],"collection":[{"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":41,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/posts\/447\/revisions"}],"predecessor-version":[{"id":452,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/posts\/447\/revisions\/452"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/media\/1718"}],"wp:attachment":[{"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/media?parent=447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/categories?post=447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.feltex.com.br\/felix\/wp-json\/wp\/v2\/tags?post=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}