Buscar

07 - Servlets

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Servidor 
Sistemas web
SERVLETs
ServletsServlets
• Uma servlet é um componente no lado do servidor.
• Pode ser usada para estender a funcionalidade de
qualquer servidor compatível com Java.
• São independentes do servidor e da plataforma.
• São executadas dentro do servidor.
ServletsServlets
• Uma servlet é uma instância de uma classe que
implementa a interface javax.servlet.Servlet.
• Na maioria das vezes estende uma implementação
dessa interface – javax.servlet.http.HttpServlet
(abstrata).
JSP
(abstrata).
• As servlets não tem interface cliente – são
independentes da exibição.
• A seguir será apresentado um exemplo simples de
Servlet, antecedido de breve explicação HTML.
HTMLHTML
• Abaixo temos a estrutura básica da página HTML, que
também é chamado de documento HTML.
JSP
<html>
<head>
<title>Cálculo de Fatorial </title>
</head>
<body>
</body>
</html>
• As marcas (tags) compõem a linguagem HTML que não é
case-sensitive.
<html> delimita todo o documento HTML
<head> engloba o cabeçalho do documento
<title> define o texto a ser exibido pelo browser
<body> delimita o corpo do documento.
HTMLHTML
• Página com um conteúdo no corpo. No exemplo um FORM
que será exibido como formulário a ser preenchido.
JSP
<body>
<FORM NAME="frm" METHOD="POST" ACTION="/proj3/fatorial">
<table>
<th> Cálculo de Fatorial </th>
<tr> <td> NUMERO: </td>
<td> <INPUT TYPE=TEXT NAME=“vNum" VALUE=“" > </td>
</tr>
<tr>
<td> <INPUT TYPE=SUBMIT VALUE="Calcular"> </td>
</tr>
</table>
</FORM>
</body>
</html>
HTMLHTML
<FORM> delimita área do formulário
<method> atributo da tag FORM que define a forma de
envio da requisição ao servidor Web, no caso do form
anterior: POST
<action> atributo da tag FORM que define uma ação a ser
executada pelo servidor Web
JSP
executada pelo servidor Web
<TABLE> delimita uma área de tabela. Aqui usada para
organizar das informações e elementos visuais na
página HTML
<th> tag que delimita informações do cabeçalho da tabela
<tr> delimita as informações de uma linha da tabela
<td> delimita as informações de uma coluna da tabela
HTMLHTML
<INPUT TYPE=TEXT NAME=“vNum" VALUE=“" > 
<INPUT TYPE=TEXT define um campo texto no
formulário.
NAME=“vNum" define o nome do campo que será vNum
que por sua vez será enviado ao servidor Web. No
JSP
que por sua vez será enviado ao servidor Web. No
servidor Web esse campo se tornará um parâmetro
contendo informação a ser processada.
VALUE=““ define o conteúdo a ser exibido no campo vNum
HTMLHTML
<INPUT TYPE=SUBMIT VALUE="Calcular">
<INPUT TYPE=SUBMIT define um botão no formulário,
que será utilizado para acionar a requisição a ser
enviada ao servidor Web (enviar um request)
JSP
enviada ao servidor Web (enviar um request)
VALUE=“Calcular“ define um label a ser exibido sobre o
botão.
Exemplo de Servlet SimplesExemplo de Servlet Simples
JSP
• No exemplo temos uma estrutura de uma classe servlet no
formato criado automaticamente pelo Eclipse.
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletFatorial extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
}
}
Exemplo de Servlet SimplesExemplo de Servlet Simples
• A servlet processa um parâmetro de nome vNum e gera o código
HTML da página de resultado a ser retornada ao browser.
JSP
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
String nm = request.getParameter("vNum");
int numero = Integer.parseInt(nm);
int valorFat = fatorial(numero);
PrintWriter out;
out = response.getWriter();out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println("Calculo de Fatorial");
out.println("</TITLE></HEAD><BODY>");
out.println("Valor Recebido:");
out.println(numero);
out.println("<BR>Resultado:");
out.println(valorFat);
out.println("</BODY></HTML>");
out.close();
}
Requisição e RespostaRequisição e Resposta
• O browser envia uma requisição inicial ao servidor para
obtenção de uma página. No exemplo aqui exposto, a
requisição pode ser na forma abaixo:
http://localhost:8080/proj3/fatorial.html
• Alternativamente a requisição pode se resumir ao
formato abaixo desde que a página fatorial.html seja
definida com uma página default do proj9.definida com uma página default do proj9.
http://localhost:8080/proj3/
• Definir uma página default de um projeto consiste em
criar uma entrada (linha) no arquivo de configuração da
aplicação – web.xml que está na pasta WEB-INF do
projeto. Essa entrada é na forma abaixo.
<welcome-file>fatorial.html</welcome-file>
Requisição e RespostaRequisição e Resposta
• Após o servidor Web processar a requisição inicial, o
formulário descrito na página fatorial.html é retornado
ao browser na forma HTML e exibido ao usuário, com
aparência abaixo.
• Após o usuário inserir a informação solicitada, aqui é
um valor, o browser envia nova requisição ao servidor
Web, tomando como base o method e o action
definidos no formulário. Neste exemplo o request tem o
formato abaixo.
http://localhost:8080/proj3/fatorial
Requisição e RespostaRequisição e Resposta
• Quando o browser envia a requisição ao servidor por GET, o
servidor aciona a Servlet e chama seu método doGET. A
requisição POST aciona o método doPost.
• Os métodos doGet e doPost possuem dois parâmetros que
são objetos instâncias das classes HttpSerlvetRequest e
HttpServletResponse.
JSP
• Os parâmetros (variáveis) recebidos do formulário são
passados ao objeto da classe HttpSerlvetRequest que é
parâmetro dos métodos citados.
• O objeto da classe HttpServletResponse é utilizado para
retornar dados para o browser cliente.
• Os parâmetros são pares nome-valor. Eles são definidos no
HTML com no exemplo:
Requisição e RespostaRequisição e Resposta
JSP
<INPUT TYPE=TEXT NAME=“vNum" VALUE=“" >
• No formulário ao usar o método POST, esse parâmetro será
enviado ao servidor Web para ser entregue a uma instância da
classe ServletFatorial. Abaixo a estrutura de dados HTTPclasse ServletFatorial. Abaixo a estrutura de dados HTTP
enviada ao servidor Web.
POST /proj9/fatorial HTTP/1.1
Referer: http://localhost/proj9/
Accept-Language: pt-br
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; 
Host: localhost:8080
Content-Length: 6
Connection: Keep-Alive
Cache-Control: no-cache
vNum=5
55
vNum
• O mapeamento /fatorial para a ServletFatorial, foi definido
quando a Servlet foi criada (no Eclipse)
Requisição e RespostaRequisição e Resposta
JSP
• Considerando o uso do Eclipse, automaticamente, ou seja, de
forma transparente ao codificador, foram inseridos trechos no
arquivo web.xml.arquivo web.xml.
• O arquivo web.xml é utilizado pelo container (servidor Web
Java) para configurar a aplicação quando a mesma é
publicada no servidor Web. O web.xml fica na pasta WEB-INF
do projeto.
Requisição e RespostaRequisição e Resposta
JSP
• Dentro do web.xml, o trecho da configuração da Servlet é
transcrito abaixo.
<servlet>
<description></description>
<display-name>ServletFatorial</display-name>
<servlet-name>ServletFatorial</servlet-name>
<servlet-class>classes.ServletFatorial</servlet-class>
</servlet></servlet>
<servlet-mapping>
<servlet-name>ServletFatorial</servlet-name>
<url-pattern>/fatorial</url-pattern>
</servlet-mapping>
• A localização do web.xml está em /proj3/WEB-INF/web.xml.
• O POST para proj3/fatorial faz o container entender que a
classe ServletFatorial deverá ser instanciada e executada.
Requisição e RespostaRequisição e Resposta
JSP
• Na Servlet, você usa o método getParameter(...) para ter
acesso aos parâmetros, ou seja, para recuperar os parâmetros
recebidosdo formulário para processamento pela Servlet.
String nm = request.getParameter("vNum");
• Observe que o objeto request é um parâmetro passado ao
método doPost, veja o trecho abaixo
protected void doPost(HttpServletRequest request ...
• O método getParameter(...) recebe como argumento o nome
da variável cujo valor deve ser obtido. No exemplo, obter o
conteúdo da variável vNum.
Conversão de variáveisConversão de variáveis
JSP
• O método getParameter(...) retorna uma informação do tipo
String.
String nm = request.getParameter("vNum");
• Na linha acima o objeto nm recebe o conteúdo da variável
vNum que foi enviada pelo formulário.
• Cada elemento HTML input type=“text” define uma variável a
int numero = Integer.parseInt(nm);
• Cada elemento HTML input type=“text” define uma variável a
ser enviada ao servidor Web.
• Se for necessário converter o valor de nm para um tipo inteiro
utilize a forma abaixo.
• Para outras conversões: utilize – Float.parseFloat(var),
Double.parseDouble(var)..
Estrutura Estrutura 
• Na Servlet, além dos métodos doPost, você pode implementar
outros métodos para processamentos específicos na Servlet,
conforme exemplo abaixo. Este método pode ser acionado a
partir de outro método da Servlet.
public int fatorial(int f) {
int ft = 1;
for (int i = 1; i <= f; i++)
ft = ft * i;ft = ft * i;
return ft;
}
protected void doPost(HttpServletRequest 
request, HttpServletResponse response) ...{
...
int resultado = fatorial(5);
...
}
Estrutura Estrutura 
• A Servlet pode gerar uma estrutura HTML para ser retornada
ao browser, conforme exemplo a seguir.
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println("Calculo de Fatorial");
out.println("</TITLE></HEAD><BODY>");
out.println("Valor Recebido:");
out.println(numero);
out.println("<BR>Resultado:");
out.println(valorFat);
out.println("</BODY></HTML>");
out.close();
Estrutura Estrutura 
• A Servlet pode gerar uma estrutura HTML para ser retornada
ao browser, conforme exemplo a seguir. O trecho foi retirado
de dentro da implementação do método doPost da Servlet.
PrintWriter out = response.getWriter();
• O objeto response é recebido no método doPost como• O objeto response é recebido no método doPost como
parâmetro.
• Ao chamar o método getWriter() obtemos um objeto
(Instância) da classe PrintWriter.
• Com o objeto out é gerado o conteúdo HTML a ser retornado
ao browser.
Retorno de informações ao browser Retorno de informações ao browser 
• Após a execução do método doPost, uma saida HTML é
gerada e o conteúdo abaixo é retornado ao browser que exibe
a informação ao usuário.
<HTML>
<HEAD>
<TITLE>Calculo de Fatorial</TITLE>
</HEAD>
<BODY>
Valor Recebido: 5
<BR>Resultado: 120
</BODY>
</HTML>
Valor Recebido: 5 
Resultado: 120 
• O conteúdo efetivamente exibido é o seguinte:
Estrutura do projeto no EclipseEstrutura do projeto no Eclipse
nome do projeto
src=source – código fonte
pacote das classes
classes fontes
conteúdo web e configuraçõesconteúdo web e configurações
arquivo configuração da aplicação
arquivos html
Estrutura do projeto no Estrutura do projeto no TomcatTomcat

Outros materiais