curso de java para web - marcos mendes
TRANSCRIPT
![Page 1: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/1.jpg)
1
Curso de Java para Web
Servlets e JavaServer Pages
Marcos Mendes
2010
![Page 2: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/2.jpg)
2
Objetivo Principal do Curso
Possibilitar a construção de
páginas Web com conteúdo
dinâmico, enfatizando o acesso a
bancos de dados.
![Page 3: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/3.jpg)
3
Bibliografia de Referência Desenvolvendo Aplicações Web com JSP,
Servlets, JSF, Hibernate, EJB 3 Persistence e Ajax
Edson Gonçalves Editora Ciência Moderna
Desenvolvendo na Web com JavaServer Pages Duane K. Fields & Mark A. Kolb Editora Ciência Moderna – Manning
Java - Servlet: Programação Jason Hunter & William Crawford Editora Ciência Moderna – O´Reilly
Revista Java Magazine – Edições 6, 7, 8, 66 e 67 www.caelum.com.br - Apostila FJ-21 www.jeebrasil.com.br
![Page 4: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/4.jpg)
44
Servlets
Servlets são classes Java executadas no lado Servidor que atendem a requisições e podem gerar uma resposta a elas.
![Page 5: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/5.jpg)
55
Aplicações Executadas no Servidor Servidor Web HTTP
JavaServer Web Development Kit (JSWDK). Jakarta TomCatJakarta TomCat. Configuração e ativação do Servidor.
Servlets Formato de um Servlet. API Servlet (pacotes javax.servlet e javax.servlet.http)
. Exemplo (TestServlet.java) Invocando o Servlet via formulário HTML. Gravação de dados de um formulário HTML em um
Banco de Dados Remoto. Exibição de dados de um Banco de Dados em uma
página HTML. Invocando o Servlet através de uma applet.
![Page 6: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/6.jpg)
66
Instalação do Jakarta Tomcat
Baixe o Tomcat no endereço:
http://jakarta.apache.org/tomcat/http://jakarta.apache.org/tomcat/ Clique no link downloaddownload;
Clique no link binariesbinaries;
Procure por Tomcat 5.0.25 keysTomcat 5.0.25 keys (ou mais recente);
Clique em 5.0.25 exe5.0.25 exe (arquivo de instalação
executável).
Após o download, execute o arquivo baixado. Aceite as opções padrão.
Após instalado, inicie o browser e acesse o
endereço http://localhost:8080/http://localhost:8080/
![Page 7: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/7.jpg)
77
Instalação do Plugin EclipseHtmlEditor
Baixe o EclipseHtmlEditorEclipseHtmlEditor no endereço:
http://amateras.sourceforge.jp/
Após o download, descompacte o arquivo na pasta
"eclipse" do Eclipse ("c:/eclipse").
O EclipseHtmlEditor necessita da instalação do GEF
(Graphical Editing Framework). Baixe o arquivo do
próprio site do Eclipse e o descompacte na pasta raiz
do seu HD ("c:/").
![Page 8: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/8.jpg)
88
Instalação do TomcatPlugin para o Eclipse
Baixe o TomcatPluginTomcatPlugin no endereço: http://www.sysdeo.com/eclipse/tomcatplugin
Após o download, descompacte o arquivo na pasta "plugins" do Eclipse ("c:/eclipse/plugins").
Inicie o Eclipse, abra o menu "Window", selecione "Preferences" e clique na opção "Tomcat".
Na janela "Preferences": Marque a versão instalada do Tomcat; Preencha a caixa de texto "Tomcat home" com o nome da pasta de instalação do Tomcat; Em "Context declaration mode", selecione a opção "Server.xml". Aplique as alterações e clique em "Ok".
Inicie o Tomcat através do botão "Start Tomcat" da barra de ferramentas do Eclipse.
Após finalizadas as mensagens na aba "console", inicie o browser e acesse o endereço http://localhost:8080http://localhost:8080
![Page 9: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/9.jpg)
99
Criação de um Projeto Web no Eclipse
Selecione File / New / Project / Java / Tomcat Project.
Preencha a caixa "Project name" com o nome do seu
projeto e clique em "Next".
Preencha a caixa "Context name" com "/Teste" e a
caixa "Subdirectory to set as web application root
(optional)" com "/web" e clique em "Finish".
Configure o plugin EclipseHtmlEditor da Amateras:
Clique com o botão direito no projeto e selecione
"Properties", clique no item "Amateras", preencha a
caixa de texto "Root" com "/web". Clique em "Apply" e
"Ok".
![Page 10: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/10.jpg)
1010
Criação de uma classe Servlet no Projeto Web
Clique com o botão direito no projeto e selecione New / Class.
Preencha a caixa "Name" com o nome da classe
"TestServlet".
Preencha a caixa "Package" com o nome do pacote
"servlets".
Clique em "Finish".
Copie o código do slide seguinte no corpo da classe.
Crie o arquivo "web.xmlweb.xml" (nos próximos slides) na pasta
"WEB-INFWEB-INF" clicando com o botão direito na pasta "WEB-INF"
e selecionando New / File.
No browse, abra o endereço http://localhost:8080/Teste/oi
![Page 11: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/11.jpg)
1111
Exemplo de recebimento e envio de dadospackage servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class TestServlet extends HttpServletHttpServlet {public void serviceservice (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException {resp.setContentTyperesp.setContentType ("text/html");PrintWriterPrintWriter out = resp.getWriterresp.getWriter();String nome = req.getParameterreq.getParameter("nome");out.println("<html><head><title> Exemplo Servlet </title>");out.printlnout.println("</head> <body> Oi " + nome + ", tudo bem ?");out.println("</body> </html>");out.closeout.close();
}}
TestServlet.javaNeste exemplo, o servlet recebe
um nome e retorna umamensagem de saudação
![Page 12: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/12.jpg)
1212
Arquivo descritor da aplicação web.xml <?xml version="1.0" encoding="ISO-8859-1"?><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_2_5.xsd" version="2.5">
<servlet><servlet-name>TesteTeste</servlet-name><servlet-class>servlets.TestServletservlets.TestServlet</servlet-class>
</servlet><servlet-mapping>
<servlet-name>TesteTeste</servlet-name><url-pattern>/oi/oi</url-pattern>
</servlet-mapping>
</web-app>
![Page 13: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/13.jpg)
1313
Criação de um formulário html para acessar um servlet
No projeto eclipse, clique com o botão direito na pasta webweb, e selecione New / File. Preencha a caixa "File name" com "Teste.html". Copie o código abaixo no arquivo criado.<html>
<head><title> Formulário com servlet </title>
</head>
<body><h1>Teste de formulário acionando uma servlet</h1><form actionaction= "oi" methodmethod="post">
<p>Nome: <input type="text" name="nome"><p> <input type="submit" value="Enviar">
</form></body>
</html>
No browser, abra o endereço http://localhost:8080/Teste/Teste.html
![Page 14: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/14.jpg)
1414
Aplicações MultiCamadasCamadaCliente
Camada Web Camada EIS
Bancos de Dados
RequestRequestHttpServletRequestHttpServletRequest
ResponseResponseHttpServletResponseHttpServletResponse
HTMLXMLJavaScriptApplet
Servlet JSP
MainFrame
Servidor de Servidor de Aplicações / Aplicações /
Servidor Servidor WebWeb
Aplicação Desktop / Web
JCA
EJB
Camada deNegócios
JPA / JDBC
Aplicações JavaDesktop
Browser
![Page 15: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/15.jpg)
1515
Requisição / Resposta em um Servlet HTTP
Browser
service()
doGet()
doPost()
doPut()
doDelete()
doOption()
doTrave()
Cliente Container Web
Request
Response
![Page 16: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/16.jpg)
1616
Árvore de diretórios da Aplicação
[Tomcat_Home]
Webapps
Sua_AplicaçSua_Aplicaçãoão
WEB-INF
classes
Arquivos .html, .html, applets e applets e imagensimagens
Arquivo web.xmlweb.xml
Servlets (.class)
A estrutura pode estar em uma árvore fora do Tomcat,basta editar o arquivo server.xml do diretório de configuraçãodo Tomcat ([TOMCAT_HOME]\conf) e incluir um novo contexto:
<Context path= "/Teste/Teste" docBase="c:\teste\c:\teste\" debug="0" />
![Page 17: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/17.jpg)
1717
Árvore de diretórios gerada pelo TomcatPlugin
Arquivos .html .html e páginas JSPpáginas JSP
Arquivos (. jar)
Servlets (.class)
Arquivo web.xmlweb.xml
![Page 18: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/18.jpg)
1818
Acesso a dados no MySQL por um servlet
Uma das formas de acessar um banco de dados MySQL através de um servlet é copiar o driver do MySQL "Connector/JConnector/J" presente no arquivo mysql-connector-java-5.0.6-bin.jarmysql-connector-java-5.0.6-bin.jar para o diretório "WEB-INF\libWEB-INF\lib" da sua aplicação.
![Page 19: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/19.jpg)
1919
Modelo de Dados para teste
Cliente Pedido
Item Produto
![Page 20: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/20.jpg)
2020
Tabela Cliente
![Page 21: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/21.jpg)
2121
Tabela Pedido
![Page 22: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/22.jpg)
2222
Tabela Item
![Page 23: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/23.jpg)
2323
Tabela Produto
![Page 24: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/24.jpg)
2424
Classes DAO – ConnectionFactory.javapackage model;
import java.sql.*;
public class ConnectionFactory {public ConnectionFactory() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");}
public Connection abreConexao() throws SQLException {String url = "jdbc:mysql://localhost:3306/alcina";return DriverManager.getConnection(url, "root", "admin");
}}
![Page 25: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/25.jpg)
2525
Classes DAO – Produto.javapackage model;
import java.text.NumberFormat;
public class Produto {private int id;private String descricao;private double preco;private String foto;
private static NumberFormat nf = NumberFormat.getCurrencyInstance();
public int getId() {return id;
}public void setId(int id) {
this.id = id;}public String getDescricao() {
return descricao;}public void setDescricao(String descricao) {
this.descricao = descricao;}
![Page 26: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/26.jpg)
2626
Classes DAO – Produto.javapublic double getPreco() {
return preco;}public void setPreco(double preco) {
this.preco = preco;}public String getPrecoFormatado() {
return nf.format(preco);}public String getFoto() {
return foto;}public void setFoto(String foto) {
this.foto = foto;}
}
![Page 27: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/27.jpg)
2727
Classes DAO – ProdutoDAO.javapackage model;
import java.sql.*;import java.util.*;
public class ProdutoDAO {private ConnectionFactory fabrica;
public ProdutoDAO() throws ClassNotFoundException {fabrica = new ConnectionFactory();
}
public boolean insereProduto(Produto p) throws SQLException {Connection con = fabrica.abreConexao();String sql = "Insert into Tbl_Produto(desc_Prod, preco_Prod, foto_Prod)
values(?, ?, ?)";PreparedStatement pst = con.prepareStatement(sql);pst.setString(1, p.getDescricao());pst.setDouble(2, p.getPreco());pst.setString(3, p.getFoto());int resp = pst.executeUpdate();pst.close();con.close();return resp == 1 ? true : false;
}
![Page 28: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/28.jpg)
2828
Classes DAO – ProdutoDAO.java (cont.)
public ArrayList<Produto> todosProdutos(String desc) throws SQLException {ArrayList<Produto> produtos = new ArrayList<Produto>();Connection con = fabrica.abreConexao();String sql = "Select * from Tbl_Produto where desc_Prod like ? order by
desc_Prod";PreparedStatement pst = con.prepareStatement(sql);pst.setString(1, "%" + desc + "%");ResultSet rs = pst.executeQuery();while (rs.next()) {
Produto p = new Produto();p.setId(rs.getInt("id_Prod"));p.setDescricao(rs.getString("desc_Prod"));p.setPreco(rs.getDouble("preco_Prod"));p.setFoto(rs.getString("foto_Prod"));produtos.add(p);
}rs.close();pst.close();con.close();return produtos;
}
public ArrayList<Produto> todosProdutos() throws SQLException {return todosProdutos("");
}
![Page 29: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/29.jpg)
2929
Classes DAO – ProdutoDAO.java (cont.)
public Produto umProduto(int idProd) throws SQLException {Produto p = new Produto();Connection con = fabrica.abreConexao();String sql = "Select * from Tbl_Produto where id_Prod = ?";PreparedStatement pst = con.prepareStatement(sql);pst.setInt(1, idProd);ResultSet rs = pst.executeQuery();if (rs.next()) {
p.setId(rs.getInt("id_Prod"));p.setDescricao(rs.getString("desc_Prod"));p.setPreco(rs.getDouble("preco_Prod"));p.setFoto(rs.getString("foto_Prod"));
}rs.close();pst.close();con.close();return p;
}
![Page 30: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/30.jpg)
3030
Classes DAO – ProdutoDAO.java (cont.)
public boolean excluiProduto(int idProd) throws SQLException {Connection con = fabrica.abreConexao();String sql = "Delete from Tbl_Produto where id_Prod = ?";PreparedStatement pst = con.prepareStatement(sql);pst.setInt(1, idProd);
int resp = pst.executeUpdate();
pst.close();con.close();
return resp == 1 ? true : false;}
}
![Page 31: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/31.jpg)
3131
Classes DAO – Cliente.javapackage model;
public class Cliente {private int id;private String nome;private String fone;private String email;private String senha;public int getId() {
return id;}public void setId(int id) {
this.id = id;}public String getNome() {
return nome;}public void setNome(String nome) {
this.nome = nome;}
![Page 32: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/32.jpg)
3232
Classes DAO – Cliente.java (cont.)
public String getFone() {return fone;
}public void setFone(String fone) {
this.fone = fone;}public String getEmail() {
return email;}public void setEmail(String email) {
this.email = email;}public String getSenha() {
return senha;}public void setSenha(String senha) {
this.senha = senha;}
}
![Page 33: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/33.jpg)
3333
Classes DAO – ClienteDAO.javapackage model;import java.sql.*;public class ClienteDAO {
private ConnectionFactory fabrica;
public ClienteDAO() throws ClassNotFoundException {fabrica = new ConnectionFactory();
}
public boolean insereCliente(Cliente c) throws SQLException {Connection con = fabrica.abreConexao();String sql = "Insert into Tbl_Cliente(nome_Cli, fone_Cli, email_Cli, senha_Cli)" +
"values(?, ?, ?, ?)";PreparedStatement pst = con.prepareStatement(sql);pst.setString(1, c.getNome());pst.setString(2, c.getFone());pst.setString(3, c.getEmail());pst.setString(4, c.getSenha());int resp = pst.executeUpdate();pst.close();con.close();return resp == 1 ? true : false;
}
![Page 34: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/34.jpg)
3434
Classes DAO – ClienteDAO.java (cont.)
public Cliente umCliente(String email) throws SQLException {Cliente c = null;Connection con = fabrica.abreConexao();String sql = "Select * from Tbl_Cliente where email_Cli = ?";PreparedStatement pst = con.prepareStatement(sql);pst.setString(1, email);ResultSet rs = pst.executeQuery();if (rs.next()) {
c = new Cliente();c.setId(rs.getInt("id_Cli"));c.setNome(rs.getString("nome_Cli"));c.setFone(rs.getString("fone_Cli"));c.setEmail(rs.getString("email_Cli"));c.setSenha(rs.getString("senha_Cli"));
}rs.close();pst.close();con.close();return c;
}}
![Page 35: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/35.jpg)
3535
Classes DAO – Pedido.javapackage model;
import java.util.Date;
public class Pedido {private int id;private Date data;private Cliente cli;public int getId() {
return id;}public void setId(int id) {
this.id = id;}public Date getData() {
return data;}public void setData(Date data) {
this.data = data;}
![Page 36: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/36.jpg)
3636
Classes DAO – Pedido.java (cont.)
public Cliente getCli() {return cli;
}public void setCli(Cliente cli) {
this.cli = cli;}
}
![Page 37: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/37.jpg)
3737
Classes DAO – PedidoDAO.javapackage model;
import java.sql.*;
public class PedidoDAO {private ConnectionFactory fabrica;
public PedidoDAO() throws ClassNotFoundException {fabrica = new ConnectionFactory();
}
public boolean inserePedido(Pedido p) throws SQLException {Connection con = fabrica.abreConexao();String sql = "Insert into Tbl_Pedido(data_Ped, id_Cli)" +
"values(?, ?)";PreparedStatement pst = con.prepareStatement(sql);pst.setTimestamp(1, new java.sql.Timestamp(p.getData().getTime()));pst.setInt(2, p.getCli().getId());int resp = pst.executeUpdate();pst.close();con.close();return resp == 1 ? true : false;
}
![Page 38: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/38.jpg)
3838
Classes DAO – PedidoDAO.java (cont.)
public int getIdPedido(int idCli, java.util.Date data) throws SQLException {int id = 0;Connection con = fabrica.abreConexao();String sql = "Select id_Ped from Tbl_Pedido where id_Cli = ? and data_Ped
= ?";PreparedStatement pst = con.prepareStatement(sql);pst.setInt(1, idCli);pst.setTimestamp(2, new java.sql.Timestamp(data.getTime()));ResultSet rs = pst.executeQuery();if (rs.next()) {
id = rs.getInt("id_Ped");}rs.close();pst.close();con.close();return id;
}}
![Page 39: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/39.jpg)
3939
Classes DAO – Item.javapackage model;
public class Item {private Produto produto;private int quantidade;public Produto getProduto() {
return produto;}public void setProduto(Produto produto) {
this.produto = produto;}public int getQuantidade() {
return quantidade;}public void setQuantidade(int quantidade) {
this.quantidade = quantidade;}
}
![Page 40: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/40.jpg)
4040
Classes DAO – ItemDAO.javapackage model;import java.sql.*;
public class ItemDAO {private ConnectionFactory fabrica;
public ItemDAO() throws ClassNotFoundException {fabrica = new ConnectionFactory();
}public boolean insereItem(int idPed, Item i) throws SQLException {
Connection con = fabrica.abreConexao();String sql = "Insert into Tbl_Item(id_Ped, id_Prod, qtd_Prod, preco_Prod)
values(?, ?, ?, ?)";PreparedStatement pst = con.prepareStatement(sql);pst.setInt(1, idPed);pst.setInt(2, i.getProduto().getId());pst.setInt(3, i.getQuantidade());pst.setDouble(4, i.getProduto().getPreco());int resp = pst.executeUpdate();pst.close();con.close();return resp == 1 ? true : false;
}}
![Page 41: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/41.jpg)
4141
Gravando dadospackage servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import model.*;
public class GravaServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html><head><title> Cadastro de Produtos");out.println("</title> </head> <body> <h1>");boolean result = false;String descricao = req.getParameter("descProd");String preco = req.getParameter("precoProd");String foto = req.getParameter("fotoProd");
GravaServlet.javaEste exemplo recebe dados de uma requisição e os grava em uma tabela
de banco de dados.
![Page 42: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/42.jpg)
4242
Gravando dados (cont.)
Produto p = new Produto();p.setDescricao(descricao);p.setPreco(Double.parseDouble(preco));p.setFoto(foto);try {
ProdutoDAO dao = new ProdutoDAO();result = dao.insereProduto(p);
} catch (Exception e) {out.println(e);
}if (result) {
out.println("<br>Produto gravado com sucesso");} else {
out.println("<br>Problemas no cadastramento");}out.println("</h1></body> </html>");out.close();
}}
![Page 43: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/43.jpg)
4343
Lendo todos os dadospackage servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;
import model.*;
public class LeServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html><head><title> Cadastro de Produtos");out.println("</title> </head> <body>");
LerServlet.javaEste exemplo lê dados de uma tabela de banco de dados e os
exibe na forma de uma tabela HTML
![Page 44: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/44.jpg)
4444
Lendo todos os dados (cont.)
try {ProdutoDAO dao = new ProdutoDAO();ArrayList<Produto> produtos = dao.todosProdutos();if (!produtos.isEmpty()) {
out.println("<table border='1'><tr> <th>Código <th>Descrição");out.println("<th>Preço <th>Foto");for(Produto p : produtos) {
out.println("<tr><td>" + p.getId());out.println("<td>" + p.getDescricao());out.println("<td>" + p.getPreco());out.println ("<td> <img src='" + p.getFoto() + "'>" );
}out.println("</table>");
}} catch (Exception e) {
out.println(e);}out.println("</body> </html>");out.close();
}}
![Page 45: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/45.jpg)
4545
Buscando dadospackage servlets;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*;
import model.*;
public class BuscaServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html><head><title> Cadastro de Produtos");out.println("</title> </head> <body>");String descricao = req.getParameter("descProd");if (descricao == null) {
descricao = "";}
![Page 46: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/46.jpg)
4646
Buscando dados (cont.)
try {ProdutoDAO dao = new ProdutoDAO();ArrayList<Produto> produtos = dao.todosProdutos(descricao);if (!produtos.isEmpty()) {
out.println("<table border='1'><tr> <th>Código <th>Descrição");out.println("<th>Preço <th>Foto <th>Excluir");for(Produto p : produtos) {
out.println("<tr><td>" + p.getId());out.println("<td>" + p.getDescricao());out.println("<td>" + p.getPreco());out.println ("<td> <img src='" + p.getFoto() + "'>" );out.println ("<td> <a href = 'apagar?idProd=" + p.getId() + "'>" );out.println ("<img src='lixo.gif'> </a>" );
}out.println("</table>");
}} catch (Exception e) {
out.println(e);}out.println("</body> </html>");out.close();
}}
![Page 47: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/47.jpg)
4747
Apagando dadospackage servlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import model.*;
public class ApagaServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><head><title> Cadastro de Produtos");
out.println("</title> </head> <body> <h1>");
boolean result = false;
String idProd = req.getParameter("idProd");
![Page 48: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/48.jpg)
4848
Apagando dados (cont.)
try {
ProdutoDAO dao = new ProdutoDAO();
result = dao.excluiProduto(Integer.parseInt(idProd));
} catch (Exception e) {
out.println(e);
}
if (result) {
out.println("<br>Produto excluído com sucesso");
} else {
out.println("<br>Problemas na exclusão");
}
out.println("</h1></body> </html>");
out.close();
}
}
![Page 49: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/49.jpg)
4949
Gravando dados na Sessão HTTP (HttpSession)
package servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
import model.*;
public class GravandoSessaoServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {Produto p = new Produto();p.setDescricao("Produto Sessão");p.setPreco(1.99);
HttpSession sessao = req.getSession();sessao.setAttribute("dados", p);resp.sendRedirect(resp.encodeURL("lersessao"));
}}
GravandoSessaoServlet.javaEste exemplo armazenadados na sessão HTTP
![Page 50: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/50.jpg)
5050
Lendo dados da Sessão HTTP (HttpSession)
package servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
import model.*;
public class LeSessaoServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html> <body> <h1>");
HttpSession sessao = req.getSession();Produto p = (Produto) sessao.getAttribute("dados");
out.println("Produto: " + p.getDescricao() + "<br> Preço: " + p.getPreco());out.println("</h1></body> </html>");out.close();
}}
LeSessaoServlet.javaEste exemplo recuperadados da sessão HTTP
![Page 51: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/51.jpg)
5151
Formato de um Servletimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServletHttpServlet {
public void initinit ( ) throws ServletExceptionServletException { }
public void serviceservice (ServletRequestServletRequest req, ServletResponseServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
public void destroydestroy ( ) { }
protect void doGetdoGet (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
protect void doPostdoPost (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
}
![Page 52: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/52.jpg)
5252
Pacote javax.servlet javax.servlet.GenericServlet
void destroydestroy ( ) void initinit ( ) void serviceservice (ServletRequest req,
ServletResponse res ) ServletRequest (interface)
ServletInputStream getInputStreamgetInputStream ( ) String getParametergetParameter ( String name ) BufferedReader getReadergetReader ( )
ServletResponse (interface) ServletOutputStream getOutputStreamgetOutputStream ( ) PrintWriter getWritergetWriter ( ) void setContentTypesetContentType ( String type )
![Page 53: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/53.jpg)
5353
Pacote javax.servlet.http javax.servlet.http.HttpServlet
void doGetdoGet ( HttpServletRequest req,
HttpServletResponse res ) void doPostdoPost ( HttpServletRequest req,
HttpServletResponse res )
HttpServletRequest (interface)
Derivada de javax.servlet.ServletRequest
HttpServletResponse (interface)
Derivada de javax.servlet.ServletResponse void sendRedirectsendRedirect ( String location )
![Page 54: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/54.jpg)
5454
Compilação de Servlets no Eclipse
Para se compilar um servlet no Eclipse é necessário que se
adicione o arquivo servlet.jarservlet.jar (Tomcat 4.x) ou servlet-servlet-
api.jarapi.jar (Tomcat 5.x ou mais recente) no classpath do Eclipse.
Para tanto, no Eclipse, Selecione o menu "ProjectProject" opção
"PropertiesProperties", clique em "Java Build PathJava Build Path", selecione a aba
"LibrariesLibraries", clique no botão "Add External Jars...Add External Jars..." selecione
o arquivo servlet-api.jarservlet-api.jar em "[Tomcat_Home]\common\[Tomcat_Home]\common\
liblib", clique em "abrirabrir" e finalmente clique em "okok".
Pode-se utilizar também um build do Apache Ant, que é o
mais recomendável.
![Page 55: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/55.jpg)
5555
Como testar o Servlet exemplo no Tomcat
Crie a pasta TesteTeste sob [Tomcat_Home]\Webapps[Tomcat_Home]\Webapps.
Crie a pasta WEB-INFWEB-INF sob TesteTeste. E a pasta classesclasses
sob WEB-INFWEB-INF
Copie o arquivo de classe Testservlet.class no
diretório Teste\WEB-INF\classesTeste\WEB-INF\classes
Crie o arquivo web.xmlweb.xml mostrado no slide anterior na
pasta WEB-INFWEB-INF.
Verifique se o Tomcat está sendo executado.
Abra o endereço http://localhost:8080/Teste/oihttp://localhost:8080/Teste/oi
![Page 56: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/56.jpg)
5656
Como testar o Servlet exemplo no JSWDK Descarregue o JavaServer Web Development Kit a partir
do endereço: http://java.sun.com/products/jsp/download.html
Istale o kit no diretório \jswdk\jswdk Mude a propriedade port para port NMTOKEN “80”port NMTOKEN “80” no
arquivo \jswdk\webserver.xml Compile o código do servlet: javac –classpath \jswdk\javac –classpath \jswdk\
lib\servlet.jar;. TestServlet.javalib\servlet.jar;. TestServlet.java Copie o arquivo de classe Testservlet.class no diretório \\
jswdk\webpages\WEB-INF\servletsjswdk\webpages\WEB-INF\servlets Edite o arquivo \jswdk\webpages\WEB-INF\mappings. \jswdk\webpages\WEB-INF\mappings.
propertiesproperties, incluindo a linha: /testservlet=testservlet/testservlet=testservlet Edite o arquivo \jswdk\webpages\WEB-INF\servlets.\jswdk\webpages\WEB-INF\servlets.
propertiesproperties, incluindo a linha: testservlet.code=TestServletestservlet.code=TestServlet
Copie os arquivos testservlet.htmltestservlet.html e TestServlet.classTestServlet.class no diretório \jswdk\webpages\jswdk\webpages
Inicie o servidor da Web executando: \jswdk\startserver\jswdk\startserver Abra o endereço http://localhost/testservlet.htmlhttp://localhost/testservlet.html
![Page 57: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/57.jpg)
5757
Instalação do Apache ANT
Baixe o Ant do site: http://ant.apache.org
Descompacte o arquivo na raíz do hd.
Renomeie a pasta para "ant".
Crie uma variável de ambiente chamada
"ANT_HOME" apontando para a pasta "<drive>:\
ant"
Inclua a pasta "ANT_HOME\bin" no path do
sistema.
Crie um buildfile para sua aplicação. (slides seguintes)
Integre o Ant com o Eclipse. (slides seguintes)
![Page 58: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/58.jpg)
5858
Build de aplicação web usando o ANT<?xml version="1.0" encoding="iso-8859-1" ?>
<project name="loja" default= "all""all" > <target name="all"name="all" depends= "compile,war,deploy""compile,war,deploy" > </target> <target name="init"name="init" > <property name="src" value="./src" /> <property name="bin" value="./WEB-INF/classes" /> <property name="war" value= "./loja.war""./loja.war" />
<property name="tomcatHome" value= "c:/tomcat""c:/tomcat" /> <property name="deployDir" value="${tomcatHome}/webapps"
/> <property name="servletApi" value="$
{tomcatHome}/common/lib/servlet-api.jarservlet-api.jar" /> </target>
![Page 59: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/59.jpg)
5959
Build de aplicação web usando o ANT <target name="compile"name="compile" depends="init"> <javac srcdir="${src}" destdir="${bin}"> <classpath path= "WEB-INF/lib/connectorj.jar""WEB-INF/lib/connectorj.jar" /> <classpath path="${servletApi}" /> </javac> </target> <target name="war"name="war" depends="init"> <jar destfile="${war}" > <fileSet dir="." includes="*.html" /> <fileSet dir="." includes="WEB-INF/**" /> </jar> </target> <target name="deploy"name="deploy" depends="war"> <copy file="${war}" todir="${deployDir}" overwrite="yes"/> </target></project>
![Page 60: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/60.jpg)
6060
Integrando o ANT com o Eclipse
Selecione o menu "Project"; Selecione "properties"; Selecione "Builders"; Clique em "new"; Escolha "Ant Build"; Em "Name Buildfile" clique em xxx e selecione o
arquivo de build criado anteriormente; Com o build selecionado clique no botão "up"
para que o "ant build" apareça em primeiro lugar na lista.
![Page 61: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/61.jpg)
6161
Invocando um servlet via Appletimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;java.net.*;import java.io.*;java.io.*;
public class TestServApp extends JApplet implements ActionListener {JTextField txtnome, txtStatus;JButton btnsend;JEditorPaneJEditorPane pagina;public void init () {
JLabel lblnome = new JLabel ("Nome: ");txtnome = new JTextField(20);txtStatus = new JTextField(" ", 20);btnsend = new JButton("Enviar");btnsend.addActionListener(this);
TestServapp.javaEste exemplo usa uma applet para enviar e receber dados do servletTestServlet visto anteriormente
![Page 62: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/62.jpg)
6262
Invocando um servlet via Applet (cont.)
Container cp = getContentPane( );cp.setLayout( new FlowLayout( ) );cp.add (lblnome);cp.add (txtnome);cp.add (btnsend);cp.add (txtStatus);pagina = new JEditorPaneJEditorPane ("text/html","<html><body> Oi </body></html>" );("text/html","<html><body> Oi </body></html>" );cp.add (pagina);
}public void actionPerformed(ActionEvent evt) {
try {URLURL app = new
URL("http://localhost/Teste/Test");URL("http://localhost/Teste/Test");URLConnectionURLConnection con = app.openConnectionopenConnection( );con.setDoInputsetDoInput(true);con.setDoOutputsetDoOutput(true);
![Page 63: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/63.jpg)
6363
Invocando um servlet via Applet (cont.)
PrintWriterPrintWriter out = new PrintWriter(con.getOutputStreamgetOutputStream( ));
out.printlnprintln("nome=" + txtnome.getText() );out.closeclose();BufferedReaderBufferedReader in = new BufferedReaderBufferedReader
(new InputStreamReaderInputStreamReader(con.getInputStreamgetInputStream()));String line;txtStatus.setText("");while ( (line = in.readLinereadLine( ) ) != null ) {
String texto = new String (txtStatus.getText() + line);txtStatus.setText(texto);
}pagina.setText( txtStatus.getText());
} catch (Exception e) {System.out.println (e);
}}
}
![Page 64: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/64.jpg)
64
JSP
JSP – JavaServer Pages, são páginas web com conteúdo dinâmico.
![Page 65: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/65.jpg)
65
Introdução a JSP
O que é JSP, e sua função.É uma tecnologia baseada na linguagem Java utilizada para a criação de sites dinâmicos na Web.As páginas JSP são arquivos texto normalmente com a extensão .jsp contendo tags html juntamente com tags (código) JSP para acesso a dados e qualquer outra funcionalidade dinâmica. O código dessas tags JSP é executado em um container no servidor e o resultado desse código é enviado ao cliente (browser) normalmente na forma de texto html.São utilizadas na camada "View" da aplicação. Enquanto os servlets, na camada "Controller".
![Page 66: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/66.jpg)
66
Introdução a JSP
Ambiente de desenvolvimento (Servidor HTTP e Container).As páginas JSP são arquivos texto, portanto, podem ser escritas por qualquer editor ascii. Elas são compiladas em servlets e executadas em um container JSP (também chamado de JSP engine) rodando em um servidor web. Utilizaremos o servidor Tomcat (projeto Jakarta – Apache Software Foundation).
![Page 67: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/67.jpg)
67
Introdução a JSP Servlet X CGI
Programas de CGI rodam fora do servidor da web, cada solicitação que um deles recebe, ele gera um novo processo no servidor, o que, em grande escala, ocasiona em consumo de recursos e problemas de performance.Já os servlets são executados em um único processo no servidor. As solicitações a um servlets geram uma nova linha de execução (thread) que consome muito menos recursos que um novo processo.
![Page 68: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/68.jpg)
68
Introdução a JSP Separação da lógica de implementação da
camada de apresentação.Uma exigência na criação de sites dinâmicos é que haja um alto grau na separação da lógica de negócios da lógica de apresentação.Normalmente estão envolvidas na construção de um site duas equipes, uma de designers, responsáveis pela apresentação, e uma de programadores (webmasters), responsáveis pelo acesso a banco de dados, autenticação de usuários, etc.Quanto menos código de programação aparecer nas páginas, maior será a separação das tarefas e menores as chances de um designer alterar um código que não deveria.
![Page 69: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/69.jpg)
69
Introdução a JSP Design de aplicações centradas em
componentes.Boa parte da separação mencionada anteriormente é conseguida através da utilização de componentes, os JavaBeans.JavaBeans são componentes reutilizáveis (um componente pode ser utilizado em várias aplicações) que encapsulam dados e código. Esses componentes são acessados pelas páginas JSP através de um conjunto de tags específicas. Portanto, simplificando, nas páginas JSP aparecem apenas as tags que enviam ou lêem dados em um bean. A lógica de implementação, ou seja, se esse bean está fazendo comunicação com um banco de dados, quais as tabelas que ele deve acessar, se o banco de dados está no servidor ou em outra máquina, e assim por diante, ficam escondidas da página mantida pelo designer.
![Page 70: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/70.jpg)
70
Primeiro Exemplo de Página JSP Página exemplo: Oi.jsp
Clique com o botão direito na pasta "web""web" do projeto, selecione New / Other... / Amateras / JSP FileNew / Other... / Amateras / JSP File. Preencha a caixa "File name" com "Oi.jsp"."Oi.jsp". Copie o trecho de código abaixo entre as tags "<body>""<body>" e "</body>""</body>" do arquivo criado.
<%<%String usr = requestrequest.getParameter("nome");if (usr == null) {
usr = "Ninguém";}%>%>Oi <%<%= usr %>%>, tudo bem ?
No browser, abra o endereço http://localhost:8080/Teste/Oi.jsp?nome=SeuNome
![Page 71: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/71.jpg)
71
Exemplo usando o Padrão MVC<html><head><title>Cadastro de Produtos</title></head><body>
<h1>Cadastro de Produtos</h1><form action= "inserirproduto" method="post">
<p>Descrição<input type="text" name="descProd">
<p>Preço<input type="text" name="precoProd">
<p>Foto<input type="text" name="fotoProd"><p> <input type="submit" value="Inserir">
</form></body></html>
InsereProduto.htmlFormulário para cadastrar
um novo produto
![Page 72: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/72.jpg)
72
Exemplo usando o Padrão MVC (cont.)
package controller;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import model.*;
public class InsereProdutoServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {boolean result = false;String descricao = req.getParameter("descProd");String preco = req.getParameter("precoProd");String foto = req.getParameter("fotoProd");Produto p = new Produto();p.setDescricao(descricao);p.setPreco(Double.parseDouble(preco));p.setFoto(foto);
InsereProdutoServlet.javaClasse que recebe os dados
do formulário e grava noBanco de dados
![Page 73: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/73.jpg)
73
Exemplo usando o Padrão MVC (cont.)
try {ProdutoDAO dao = new ProdutoDAO();result = dao.insereProduto(p);
} catch (Exception e) {e.printStackTrace();
}HttpSession sessao = req.getSession();sessao.setAttribute("prod", p);RequestDispatcher rd =
req.getRequestDispatcher("ProdutoGravado.jsp");rd.forward(req, resp);
}}
![Page 74: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/74.jpg)
74
Exemplo usando o Padrão MVC (cont.)
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<jsp:useBean id="prod" class="model.Produto" scope="session"> <jsp:setProperty name="prod" property="*"/></jsp:useBean>
<html><head>
<title>Cadastro de Produtos</title></head><body>
Produto Gravado com Sucesso!!!<table border = "1">
<tr><td>Produto<td><%=prod.getDescricao()%><tr><td>Preço<td><%=prod.getPreco()%><tr><td>Foto<td><%=prod.getFoto()%>
</table></body>
</html>
ProdutoGravado.jspPágina JSP que recebe oproduto gravado e exibeUma confirmação para o
usuário
![Page 75: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/75.jpg)
75
Compra em uma Loja Virtual<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %><%@ page import = "java.util.*, model.*" %><jsp:useBean id="dao" class="model.ProdutoDAO"/>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/><title>Catálogo de Produtos</title>
</head><body>
<%ArrayList<Produto> produtos = dao.todosProdutos(); %><table border="1"> <% for(Produto p : produtos) { %> <tr><td> <%=p.getDescricao()%> </td> <td> <%=p.getPreco()%> </td> <td> <img src="<%=p.getFoto()%>"> </td> <td> <a href="Carrinho.jsp?id=<%=p.getId()%>">comprar</a> </td> </tr> <%} %></table>
</body></html>
Catalogo.jspPágina JSP que exibe os produtos
para que o usuário possa adicioná-los no carrinho de compras
![Page 76: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/76.jpg)
76
Compra em uma Loja Virtual (cont.)
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %><%@ page import = "java.util.*, model.*" %>
<% HashMap<Integer, Integer> carrinho;carrinho = (HashMap<Integer, Integer>) session.getAttribute("carrinho");if (carrinho == null) {
carrinho = new HashMap<Integer, Integer>();}int id = Integer.parseInt(request.getParameter("id"));carrinho.put(id, 1);session.setAttribute("carrinho", carrinho);%>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Carrinho de Compras</title></head>
Carrinho.jspPágina JSP que armazena sessão os
produtos selelecionados pelo usuário
![Page 77: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/77.jpg)
77
Compra em uma Loja Virtual (cont.)
<body><table border="1"><tr><th>Código<th>Descrição do Produto<th>Quantidade</tr><%ProdutoDAO dao = new ProdutoDAO();Set<Integer> ids = carrinho.keySet();%><form action="fecharpedido">
<%for(int idProd : ids) {
Produto p = dao.umProduto(idProd);%>
<tr><td><input type="text" name="id" readonly size=5 value="<%=p.getId()%>">
<td><%=p.getDescricao()%> <td><input type="text" name="qtd" size=10
value="<%=carrinho.get(idProd)%>"><% }%><tr><td colspan="3" align="center">
<input type="submit" value="Fechar Pedido"></form></table><p><a href="Catalogo.jsp">Continuar Comprando</a>
</body></html>
Carrinho.jsp (cont.)
![Page 78: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/78.jpg)
78
Compra em uma Loja Virtual (cont.)
package controller;
import java.io.*;import java.util.*;
import javax.servlet.*;import javax.servlet.http.*;
import model.*;
public class FechaPedidoServlet extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// Verifica se cliente está logadoHttpSession sessao = req.getSession();Cliente cli = (Cliente) sessao.getAttribute("cliente");if (cli == null) {
resp.sendRedirect("Login.jsp");} else {
FechaPedidoServlet.javaVerifica se o cliente está logado,Cria um novo pedido e grava os
Itens do carrinho no pedido
![Page 79: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/79.jpg)
79
Compra em uma Loja Virtual (cont.)
// Cria novo Pedidotry {
PedidoDAO daoPed = new PedidoDAO();Pedido ped = new Pedido();ped.setCli(cli);Date data = new Date();ped.setData(data);daoPed.inserePedido(ped);int idPed = daoPed.getIdPedido(cli.getId(), data);
// Cria Itens do PedidoItemDAO daoItem = new ItemDAO();ProdutoDAO daoProd = new ProdutoDAO();String[] ids = req.getParameterValues("id");String[] qtds = req.getParameterValues("qtd");
FechaPedidoServlet.javaCont.
![Page 80: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/80.jpg)
80
Compra em uma Loja Virtual (cont.)
for (int cont = 0; cont < ids.length; cont++) {Produto prod = new Produto();prod = daoProd.umProduto(
Integer.parseInt(ids[cont]));Item item = new Item();item.setProduto(prod);
item.setQuantidade(Integer.parseInt(qtds[cont]));daoItem.insereItem(idPed, item);
}} catch (Exception e) {
e.printStackTrace();}RequestDispatcher rd =
req.getRequestDispatcher("ConfirmaPedido.jsp");rd.forward(req, resp);
}}
}
FechaPedidoServlet.javaCont.
![Page 81: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/81.jpg)
81
Compra em uma Loja Virtual (cont.)
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %><%@ page import = "model.*"%><%String email = request.getParameter("email");String senha = request.getParameter("senha");if (email != null) {
try {ClienteDAO daoCli = new ClienteDAO();Cliente cli = daoCli.umCliente(email);if (cli != null) {
if (senha.equals(cli.getSenha())) {session.setAttribute("cliente", cli);RequestDispatcher rd =request.getRequestDispatcher("Catalogo.jsp");rd.forward(request, response);
} else {out.println("<h1>Senha Inválida</h1>");
}} else {
out.println("<h1>Cliente não cadastrado</h1>");}
} catch(Exception ex) {ex.printStackTrace();
}}%>
Login.jspPágina para efetuar o
login do cliente
![Page 82: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/82.jpg)
82
Compra em uma Loja Virtual (cont.)
<html>
<head>
<title>Login do Sistema</title>
</head>
<body>
<h1>Login do Sistema</h1>
<form method = "post">
<p>Email:<input type="text" name="email"></p>
<p>Senha:<input type="text" name="senha"></p>
<p><input type="submit" value="Fazer Login"></p>
</form>
</body>
</html>
Login.jspCont.
![Page 83: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/83.jpg)
83
Compra em uma Loja Virtual (cont.)
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %><jsp:useBean id="cliente" class="model.Cliente" scope="session"> <jsp:setProperty name="cliente" property="*"/></jsp:useBean>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Confirmação do Pedido</title></head><body>
<h1>Pedido Cadastrado com Sucesso</h1><h1><%=cliente.getNome()%> </h1><h1><%=cliente.getEmail()%> </h1>
</body></html>
ConfirmaPedido.jspPágina de confirmaçãodo cadastro do pedido
![Page 84: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/84.jpg)
84
Comentários Comentários de conteúdo. Serão incluídos no output da
página JSP.
<!--<!-- ... -->--> Comentários JSP. São independentes da linguagem de
criação de scripts. São ignorados pelo container JSP. Não aparecem no servlet resultante.
<%--<%-- ... -->--> Comentários em scriptlets. Aparecem no servlet
resultante. São dependentes da linguagem de criação de scripts. No caso de Java são /* ... */ ou // ...
<% /*/* ... */ */
//// ... %>
![Page 85: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/85.jpg)
85
Diretivas
As diretivas são tags utilizadas como uma espécie de configuração da página JSP. São indicadas com as tags:
page<%@ page atrib1 = “val1” atrib2 = “val2”<%@ page atrib1 = “val1” atrib2 = “val2” ... %>%>
<jsp:directive.page atrib1 = “val1” atrib2 = “val2”<jsp:directive.page atrib1 = “val1” atrib2 = “val2” ... />/>
Atributos aceitos: autoFlushautoFlush
““true”true” o buffer será esvaziado automaticamente enviando os dados ao cliente.
““false”false” se o buffer ficar cheio, será emitida uma exceção.
padrão: <%@ page autoFlush = “true” %>
![Page 86: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/86.jpg)
86
Diretivas bufferbuffer
define o tamanho do buffer de saída, “none”“none” para desativar o buffer.
padrão: <%@ page buffer = “6kb” %> contentTypecontentType
define o tipo MIME da resposta gerada pela página JSP
padrão: <%@ page contentType = “text/html; charset=ISO=8859-
1” %> errorPageerrorPage
especifica uma página a ser exibida caso ocorra um erro. Deve-se indicar um URL no mesmo servidor (local).
ex: <%@ page errorPage = “paginaerro.jsp” %>
![Page 87: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/87.jpg)
87
Diretivas extendsextends
define a superclasse a ser usada pelo container para a compilação da página JSP em servlet.
importimportindica os pacotes das classes a serem utilizadas na página. É o único atributo que pode ser repetido em uma diretiva page.ex: <%@ page import = “java.util.List, java.text.*” %>
infoinfousado para documentação da página.ex: <%@ page info = “Página Principal, 2009” %>
isErrorPageisErrorPageindica se a página é uma página de erro.padrão: <%@ page isErrorPage = “false” %>
![Page 88: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/88.jpg)
88
Diretivas isThreadSafeisThreadSafe
indica se a página poderá responder a múltiplas solicitações simultaneamente.
padrão: <%@ page isThreadSafe = “true” %> languagelanguage
especifica a linguagem de criação de scripts a ser usada pela página em todos os seus elementos de scripts.
padrão: <%@ page language = “java” %> sessionsession
define se a página participa ou não do gerenciamento de sessão.
padrão: <%@ page session = “true” %>
![Page 89: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/89.jpg)
89
Diretivas includeinclude
usada para incluir arquivos de outras páginas na página corrente. As páginas incluídas devem estar no mesmo servidor. Não há limitações para o número de páginas incluídas.ex: <%@ include file = “cabecalho.jsp” %>
taglibtaglibindica uma biblioteca de tags personalizadas em que a página corrente se apoia. É indicado o URI do arquivo Tag Library Descriptior (TLD) e um prefixo de referência para a biblioteca. A biblioteca deve estar no mesmo servidor da página. Pode-se indicar várias bibliotecas, mas cada uma com um prefixo.ex: <%@ taglib uri = “tlds/persontags” prefix = “pt” %>
![Page 90: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/90.jpg)
90
Declarações
São usadas para definir variáveis e métodos.
<%! ... %><%! ... %>
<jsp:declaration> ... </jsp:declaration><jsp:declaration> ... </jsp:declaration>
Variáveis
As variáveis definidas como declarações se tornam variáveis da classe de servlet e podem ser acessadas por qualquer elemento da página.
Exemplo:
<%! int x = 5, y = 10; String nome = “João” %>
![Page 91: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/91.jpg)
91
Declarações Métodos
Os métodos definidos através das declarações se tornam os métodos da classe de servlet.
Exemplo:
<%!
long fatorial(int x) {
if ( x == 0 ) return 1;
return x * fatorial(x-1);
}
%>
![Page 92: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/92.jpg)
92
Declarações
Podem ser definidos vários métodos e variáveis em uma única tag de declaração:
<%! String nome = “Maria”;int idade = 23;
String getNome( ) {return nome;
}
int getIdade( ) {return idade;
}%>
![Page 93: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/93.jpg)
93
Expressões
Destinadas ao output da página JSP. Os elementos de expressão são substituídos por seu valor resultante na exibição da página.
<%= ... %><%= ... %>
<jsp:expression> ... </jsp:expression><jsp:expression> ... </jsp:expression>
Exemplo:
<html> <body>
<%! double raio = 5; %>
A área da circunferência de raio <%= raio <%= raio %>%> é
<%= Math.PI * Math.pow(raio, 2) %><%= Math.PI * Math.pow(raio, 2) %>
</body></html>
![Page 94: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/94.jpg)
94
Expressões
No caso onde o output é condicional, pode-se utilizar em uma expressão o operador condicional terciário ? :? :
<html> <body>
<%@ page import = “java.util.Calendar” %>
<%! Calendar tempo = Calendar.getInstance();
int hora = tempo.get(Calendar.HOUR_OF_DAY);
%>
Período do dia é <%= hora < 12 ? “AM”: “PM” <%= hora < 12 ? “AM”: “PM”
%>%>
</body></html>
![Page 95: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/95.jpg)
95
scriptlets
<% ... %><jsp:scriptlet> ... </jsp:scriptlet>
![Page 96: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/96.jpg)
96
Objetos Implícitos relacionados a Servlets
page (javax.servlet.jsp.HttpJspPage)
config (javax.servlet.ServletConfig) getInitParameterNames( ) getInitParameter( String name )
![Page 97: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/97.jpg)
97
Objetos Implícitos relacionados a Input/Output
request (javax.servlet.http.HttpServletRequest) getParameterNames ( ) getParameter (String name) getParameterValues (String name) getHeaderNames ( ) getHeaders (String name) getIntHeader (String name) getDateHeader (String name) getCookies ( )
![Page 98: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/98.jpg)
98
Objetos Implícitos relacionados a Input/Output
getMethod ( ) getRequestURL ( ) getQueryString ( ) getSession (boolean flag) getRequestDispatcher(String path) getRemoteHost ( ) getRemoteAddr ( ) getRemoteUser ( )
![Page 99: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/99.jpg)
99
Objetos Implícitos relacionados a Input/Output
response (javax.servlet.http.HttpServletResponse) setContentType ( ) getCharacterEncoding ( ) addCookie (cookie) containsHeader (String name) setHeader (name, value) setIntHeader (name, value) setDateHeader (name, date) addHeader (name, value) addIntHeader (name, value) addDateHeader (name, date) setStatus (code) sendError (status, msg) sendRedirect (url) encodeRedirectURL (url) encodeURL (name)
![Page 100: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/100.jpg)
100
Objetos Implícitos relacionados a Input/Output
out (javax.servlet.jsp.JspWriter) isAutoFlush ( ) getBufferSize ( ) getRemaining ( ) clearBuffer ( ) clear ( ) newLine ( ) flush ( ) close ( )
![Page 101: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/101.jpg)
101
Objetos Implícitos Contextuais
session (javax.servlet.http.HttpSession) getId ( ) getCreationTime ( ) getLastAccessedTime ( ) getMaxInactiveInterval ( ) setMaxInactiveInterval (t) isNew ( ) invalidate ( )
application (javax.servlet.ServletContext) pageContext
(javax.servlet.jsp.PageContext)
![Page 102: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/102.jpg)
102
Objetos Implícitos Contextuais
application (javax.servlet.ServletContext) getServerInfo ( ) getMajorVersion ( ) getMinorVersion ( ) getMimeType (filename) getResource (path) getResourceAsStream (path) getRealPath (path) getContext (path) getRequestDispatcher (path) log (message) log (message, exception)
![Page 103: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/103.jpg)
103
Objetos Implícitos Contextuais
pageContext (javax.servlet.jsp.PageContext) getPage ( ) getRequest ( ) getResponse ( ) getOut ( ) getSession ( ) getServletConfig ( ) getServletContext ( ) getException ( ) forward (path) include (path)
![Page 104: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/104.jpg)
104
Objetos Implícitos Contextuais
pageContext (javax.servlet.jsp.PageContext) setAttribute (key, value, scope) getAttributeNamesInScope (scope) getAttribute (key, scope) removeAttribute (key, scope) findAttribute (name) getAttributeScope (name) PAGE_SCOPE REQUEST_SCOPE SESSION_SCOPE APPLICATION_SCOPE
![Page 105: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/105.jpg)
105
Objeto Implícito de Tratamento de Erros
exception (javax.lang.Throwable) getMessage ( ) printStackTrace (out) toString ( )
![Page 106: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/106.jpg)
106
Ações
Forward Include Plug-in Tags Bean
![Page 107: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/107.jpg)
107
Introdução a EL (Expression Language)
A Linguagem de Expressões facilita o acesso a objetos e seus membros.As expressões são escritas entre ${${ e }}, podendo estar em qualquer parte da página, exceto em scriptlets. O código JSP:
<jsp:getProperty name = "usuario" property = "nome" />
Pode ser escrito em EL da seguinte forma:${usuario.nome}
Como esse acesso é traduzido para uma chamada getXXX(), os objetos devem seguir o padrão JavaBeans.
![Page 108: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/108.jpg)
108
Introdução a EL (Expression Language)
A EL oferece alguns objetos implícitos, que facilitam o acesso a informações da página.
paramparam – Usado para acessar parâmetros do request. paramValuesparamValues - Usado para acessar parâmetros de
múltiplos valores. headerheader – Usado para acessar valores dos atributos
do cabeçalho HTTP. headerValuesheaderValues – Usado para acessar atributos de
múltiplos valores. cookiecookie – Retorna um cookie através de seu nome. initParaminitParam – Permite o acesso aos parâmetros de
inicialização da aplicação.
![Page 109: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/109.jpg)
109
Introdução a JSTL (JSP Standard Tag Library)
A JSTL é um conjunto de bibliotecas de tags que tem como objetivo aumentar a produtividade e a legibilidade das páginas JSP, facilitando assim, a manutenção dessas páginas.Teve seu lançamento em Julho de 2002 e está presente na JSP a partir da versão 2.0É composta por quatro TagLibs
CoreCore – Controle de fluxo da página e saída de mensagens.
FormatFormat – Formatação de textos e números com base na localização do usuário (Internacionalização – I18N).
SQLSQL – Acesso a bancos de dados relacionais. XMLXML – Processamento de XML.
![Page 110: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/110.jpg)
110
Componentes Java Beans
Arquitetura Abstração Reusabilidade
Construção Utilização
![Page 111: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/111.jpg)
111
Distribuição e Implantação de Aplicações Web
Arquivos War
![Page 112: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/112.jpg)
112
Validação de Formulários
Cliente Servidor
![Page 113: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/113.jpg)
113
Tratamento de Cookies
![Page 114: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/114.jpg)
114
Envio de email
![Page 115: Curso de Java Para Web - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc718/html5/thumbnails/115.jpg)
115
Tags Personalizadas