Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Servidor Sistemas web Fundamentos Web ClienteCliente--ServidorServidor • Aplicação típica cliente-servidor – programa executável em estação e servidor BD remoto. • Interface e regras de negócios no cliente. • Dados no servidor. Servidor Dados Programa.exe ClienteCliente--ServidorServidor • Processamento das regras de negócios do lado do cliente. • Processamento do evento ocorre na cpu da estação. • Exibição de resposta da aplicação tratada diretamente no lado cliente. Cliente Programa.exe Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click Try String sql = "SELECT FROM TBProdutos..." Catch ex As Exception End Try End Sub Plataforma WebPlataforma Web • Baseada em HTTP – Protocolo simples de transferência de arquivos – Fluxo de troca de páginas entre um browser e um servidor Web • Funcionamento (simplificado): Servidor Abre conexão para www.xyz.com: (1) Uma requisição: GET /cadastro.html HTTP/1.1 ...(2) Uma resposta: HTTP/1.1 200 OK ... (3) Fecha conexão (4) Browser Web www.xyz.com Servidor Web www.xyz.com browser Plataforma WebPlataforma Web protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String acao = request.getParameter("acao"); if (acao.equals(“SALVAR")) { try { //Processa Salvar <HTML> <HEAD> <TITLE>Formulario Exemplo</TITLE> </HEAD> <BODY> <FORM METHOD=POST ACTION="servlet/usuario"> Qual seu nome? <INPUT TYPE=TEXT NAME=“vNome"><P> • Processamento da ação do usuário envolve estação (envio request) e servidor (processamento request) } catch (Exception e) { } } Container Java (JSP/Servlet) Trecho de código de Servlet <INPUT TYPE=TEXT NAME=“vNome"><P> <INPUT TYPE=SUBMIT VALUE=Salvar> </FORM> </BODY> </HTML> browser post /http resposta/html Plataforma WebPlataforma Web • Pode estar num arquitetura n tier (neste exemplo 3 camadas) • Browser – apenas exibe interface. • Servidor Web – Processa regras de negócios e formata a interface a ser enviada ao Browser. Uma requisição (envio de dados para uma JSP/servlet) Servidor processa a Servlet e responde ao cliente BD browser Plataforma WebPlataforma Web • Do lado do cliente (browser) apenas captura e envia de informações ao servidor (web). • Validação básica dos dados no lado do cliente - Javascript <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <FORM METHOD=POST ACTION="servlet/Usuario"> Dados do formulário… <INPUT TYPE=“SUBMIT” NAME=“Consultar” /> </FORM> </BODY> </HTML> Para Servidor Web browser Plataforma WebPlataforma Web • O servidor recebe a requisição do browser (1). • O servidor processa a requisição (2). • O servidor formata a resposta a ser enviada ao cliente (browser) (3) BD protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //... String sql = “SELECT * FROM ...” //... out.println(“Informação não localizada....) } 2 3 1 Para Browser Principais métodos HTTP (requisição) • GET – solicito um arquivo ao servidor HTTP/Envia requisição para processamento GET <url> <protocolo>/<versão> <Cabeçalhos HTTP>:<valores> • GET pode enviar dados através da URL (tamanho limitado) de JSP • GET pode enviar dados através da URL (tamanho limitado) de forma visível ao usuário <URL>?dados • POST - envia request/dados ao servidor (como fluxo de bytes) embutidos na estrutura de dados do HTTP POST <url> <protocolo>/<versão> <Cabeçalhos HTTP>: <valores> <linha em branco> <dados> JSP Protocolo HTTP Uso de GET x POST no envio de formulário: Limitações para o GET: •Quantidade de dados a ser transmitida •Quantidade de dados a ser transmitida (2048 bytes IE) •Dados como senha •Caracteres não imprimíveis Aplicações Web e Java • Servlets e JavaServer Pages (JSP) são as soluções Java para estender o servidor HTTP – Suportam os métodos de requisição padrão HTTP (GET, POST) – Geram respostas compatíveis com HTTP (códigos de status, cabeçalhos e dados) JSP • É preciso usar um servidor que suporte as especificações de servlets e JSP. Exemplo: Tomcat, JBoss, outros. JSP Protocolo HTTP Pedido: GET /cadastro.htmlcadastro.html HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.08 [en] (X11; I; Linux 2.0.36 i586; Nav) Host: www.xyz.com Accept: image/gif, image/jpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 JSP Protocolo HTTP Resposta: HTTP/1.1 200 OK Date: Mon, 10 May 1999 06:15:49 GMT Server: Apache/1.3.0 (Unix) Connection: close Connection: close Content-Type: text/html <HTML><HEAD> <meta http-equiv="refresh" content="0; URL=http://www.xyz.com/"> </HEAD> JSP Protocolo HTTP Formulário: <HTML> <HEAD> <TITLE>Formulario Exemplo</TITLE> </HEAD> <BODY> <BODY> <FORM METHOD=POST ACTION="servlet/Hello"> Qual seu nome? <INPUT TYPE=TEXT NAME=“v_nome"><P> <INPUT TYPE=SUBMIT VALUE=Salvar> </FORM> </BODY> </HTML> formulario.html JSP Protocolo HTTP Envio do formulário: POST /servletservlet//UsuarioUsuario HTTP/1.0 Envio da Requisição (request) (a partir do browser) http://www.servidor.com/cadastro.html POST /servletservlet//UsuarioUsuario HTTP/1.0 Referer: http://www.servidor.com/ Connection: Keep-Alive User-Agent: Mozilla/4.08 [en] (X11; I; Linux 2.0.36 i586; Nav) Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Content-length: 19 vNome=Joaquim Manoel Exemplo de Servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; response.setContentType("text/html"); JSP response.setContentType("text/html"); out = response.getWriter(); String user = request.getParameter(“vNome"); if (user == null) user = "World"; out.println("<HTML><HEAD><TITLE>"); out.println("Simple Servlet Output"); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>Simple Servlet Output</H1>"); out.println("<P>Hello, " + user); out.println("</BODY></HTML>"); out.close(); } } Exemplo de JSP <HTML><HEAD> <TITLE>Simple Servlet Output</TITLE> </HEAD><BODY> <% String user = request.getParameter(“vNome"); if (user == null) JSP if (user == null) user = "World"; %> <H1>Simple Servlet Output</H1> <P>Hello, <%= user %> </BODY></HTML> Página recebida no browser • Página recebida no browser, Url da requisição Requisição para o servlet: http://servidor/servlet/SimpleServlet?vNome=Joaquim Requisição para o JSP: http://servidor/hello.jsp?vNome=Joaquim JSP http://servidor/hello.jsp?vNome=Joaquim • Código fonte visto no cliente (no browser), retornado pelo servidor <HTML><HEAD> <TITLE> Simple Servlet Output</TITLE> </HEAD><BODY> <H1>Simple Servlet Output</H1> <P>Hello, Joaquim </BODY></HTML> Arquiteturas de aplicações Web • Grandes aplicações Web geralmente consistem de várias páginas JSP, HTML, imagens misturadas com classes Java comuns e servlets • Procura-se separar responsabilidades – Controle de requisição, resposta, repasse de dados – Processamento de lógica de negócio JSP – Processamento de lógica de negócio – Processamento de resposta e geração de páginas • Aplicações que dividem-se em camadas de acordo com as responsabilidades acima são aplicações MVC (Model-View-Controller) Mais fáceis de manter e de reutilizar por equipes heterogêneas (web designers, programadores, etc.)
Compartilhar