OBJETIVO Nesta aula será apresentado o desenvolvimento básico sobre HTTP Servlets. Espera-se que, ao final da apresentação, o aluno tenha noções de como escrever seu próprio HTTP Servlet. PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. COMO ESCREVER UM HTTP SERVLET Para escrever um servlet HTTP... Estender HttpServlet; Implementar um ou mais de seus métodos de serviço*; *tipicamente: doPost() e/ou doGet() PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; Como implementar doGet() e doPost(); A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. A REQUISIÇÃO HTTP Uma requisição HTTP feita pelo browser tipicamente contém vários cabeçalhos RFC822*. C A B E Ç A L H O Os métodos de HttpServletRequest permitem extrair informações de qualquer um deles. * especificação de cabeçalho para e-mail PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. OBTENÇÃO DE DADOS DE REQUISIÇÕES Alguns métodos de HttpServletRequest: String getMethod() - retorna o nome do método requisitado pelo usuário. Ex.: GET StringBuffer getRequestURL() - reconstrói a URL acessado pelo cliente. HttpSession getSession() - retorna a sessão atual relacionada com a requisição do cliente. HttpSession getSession(true) – cria uma sessão caso não exista! String getParameter(String name) – retorna um parâmetro enviado pelo usuário. Enumeration getParameterNames() - obtém nomes dos parâmetros. Enumeration getHeaderNames() - obtém nomes dos cabeçalhos. String getHeader("nome") - retorna um valor de um elemento do cabeçalho. Cookie[] getCookies() - recebe cookies do cliente Entre outros... PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. EXEMPLO Código: PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. A RESPOSTA HTTP Uma resposta HTTP é enviada pelo servidor ao browser e contém informações sobre os dados anexados. Os métodos de HttpServletResponse permitem construir um cabeçalho. PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. PREENCHIMENTO DA RESPOSTA Alguns métodos de HttpServletResponse: addHeader(String nome, String valor) - adiciona cabeçalho HTTP. void setStatus(int sc) - status da resposta. printWriter getWriter() - obtém um Writer para gerar a saída. Ideal para saída de texto. Entre outros... PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. EXEMPLO Código: PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. COMO IMPLEMENTAR DOGET() E DOPOST() O método doGet() processa as requisições GET. •Alguns formulários que usam GET. •Os dados são exibidos na URL. O método doPost() processa as requisições POST. • doPost() é usado para receber dados de formulários. • Os dados não são exibidos no navegador. PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. PARÂMETROS DA REQUISIÇÃO Parâmetros são pares nome=valor que são enviados pelo cliente concatenados em strings separados por &: Parâmetros podem ser passados na requisição de duas formas • Se o método for GET, os parâmetros são passados em uma única linha no query string, que estende a URL após um "?“: • Se o método for POST, os parâmetros são passados como um stream no corpo na mensagem: PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. COMO LER PARÂMETROS DA REQUISIÇÃO • Os valores dos parâmetros(nome e idade) são recuperados pelo método getParameter(), por meio do servletRequest, que recebe o nome e a idade. PLANO DA APRESENTAÇÃO Implementando HTTP Servlets: Como escrever um Sevlet Http; A requisição HTTP; Obtenção de dados de requisições; Exemplo; A resposta HTTP; Preenchimento de uma resposta; Exemplo; Como implementar doGet() e doPost(); Parâmetros da requisição; Como ler parâmetros da requisição; Como gerar uma resposta. COMO GERAR UMA RESPOSTA Para gerar uma resposta, primeiro é necessário obter, do objeto HttpServletResponse, um fluxo de saída, que pode ser de caracteres (Writer) Deve-se também definir o tipo de dados a ser gerado. Depois, pode-se gerar os dados, imprimindo-os no objeto de saída obtido anteriormente. Any Doubt