SlideShare uma empresa Scribd logo
LINGUAGEM DE
PROGRAMAÇÃO III
APLICAÇÕES WEB
CONTAINER
• O container gerencia e executa o servlet. Porque?
1. Suporte para comunicações:
– oferece uma maneira simples para comunicação
entre os seus servlets e o servidor;
– Você deve se preocupar apenas com a lógica do
seu próprio negócio, que está contida no seu
servlet
– O container conhece o protocolo de
comunicação entre ele mesmo e o servidor
CONTAINER
2. Gerenciamento do ciclo de vida:
– O container controla e a vida e a morte dos
servlets;
– Carrega classes, inicialização servlets, chama
métodos do servlet, coleta lixo;
– Você não precisa se preocupar com o
gerenciamento dos recursos
CONTAINER
3) Suporte a Multithread:
– O container cria automaticamente uma nova
thread em java para cada solicitação do servlet
recebida.
– O container cria e gerencia as thread para
várias solicitações
– A thread termina quando o servlet conclui a
execução do método de serviço HTTP para a
solicitação daquele cliente
CONTAINER
4. Certeza de segurança
– Você pode gerenciar e alterar sua segurança
sem tocar, ou recompilar, seus arquivos-fonte
em java, usando um arquivo XML (deployment
descriptor)
5. Suporte ao JSP
– O container se encarrega de traduzir o código
JSP em código JAVA
Como o container trata uma
solicitação
Como o container trata uma
solicitação
Exemplo simples de código servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class teste extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet teste</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally { out.close(); }
}
}
Exemplo simples de código servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class teste extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet teste</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally { out.close(); }
}
}
99,9% de todos os servlets desenvolvidos
anulam ou o método GET ou o método POST.
Isto é, apenas um dos métodos é utilizado no
servlet. Como já mencionado na aula anterior,
a maioria utiliza POST.
Exemplo simples de código servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class teste extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet teste</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally { out.close(); }
}
}
99,9% de todos os servlets desenvolvidos no
mundo são HTTPSERVLETS
Exemplo simples de código servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class teste extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet teste</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally { out.close(); }
}
}
REQUEST: é aqui que o seu servlet consegue as
referências dos objetos solicitação
RESPONSE: é aqui que o seu servlet consegue as
referências dos objetos reposta
(ambos criados pelo container)
Exemplo simples de código servlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class teste extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet teste</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally { out.close(); }
}
}
Uma forma de imprimir a resposta do servlet no
navegador – não é utilizado no mundo real com
frequencia (utilize apenas para testes). PrintWriter
imprimirá a resposta que o seu servlet recebe do
container e, ainda poderá escrever um código
HTML no objeto de resposta.
Testando um Servlet no Netbeans
• Criar uma aplicação web no netbeans
• Criar um servlet
• Sem fazer qualquer tipo de alteração nos
arquivos criados, executar o arquivo
• O navegador será aberto automaticamente
com a resposta
• Mais detalhes serão vistos na aula sobre
servlets
• http://docs.oracle.com/javaee/6/api/javax/s
ervlet/package-summary.html
Como o Container encontra o
Servlet?
• A URL que chega como parte da solicitação
do cliente é mapeada para um servlet
específico no servidor
• A solicitação do usuário deve mapear para
um servlet específico e cabe ao
desenvolvedor entender e configurar este
mapeamento.
Um servlet pode ter três nomes
• RESUMO:
1. Nome da URL conhecido pelo cliente
2. Nome interno secreto conhecido pelo
distribuidor
3. Nome do arquivo verdadeiro
Um servlet pode ter três nomes
• Um servlet tem um nome do caminho para o arquivo
(um caminho para um arquivo de classe real)
• O desenvolvedor da classe do servlet escolhe o
nome da classe e o nome do pacote que define
parte da estrutura de diretórios
• O local no servidor define o nome completo do
caminho
• Entretanto, qualquer pessoa que distribua o servlet
também pode atribuir a ele um nome especial de
distribuição
Um servlet pode ter três nomes
• Um nome especial de distribuição é um nome
interno secreto, que não precisa ser igual ao nome da
classe ou do arquivo
• Ele pode ser igual ao nome da classe ou o caminho
relativo para o arquivo da classe, mas também pode ser
diferente
• O servlet tem um nome público de URL, que é o nome
que o cliente conhece, o nome codificado no HTML.
• Quando o usuário clicar em um link, este nome público
de URL é enviado ao servidor na solicitação HTTP, e é
ele quem vai até o servlet correspondente
Um servlet pode ter três nomes
• Mapear o nome dos servlets aumenta a flexibilidade
e a segurança da sua aplicação
• Por este motivo não usamos o mesmo nome para o
servlet
• Escrevendo o caminho verdadeiro em seus arquivos,
terá problemas quando precisar reorganizar a
aplicação em novos diretórios
• O cliente não precisa saber o caminho verdadeiro,
sem contar que ele podem tentar acessar
diretamente o servlet
Deployment Descriptor XML
• O DD é criado para informar ao Container como
executar seus servlets e JSPs.
• É usado para mapeamento dos nomes e
mapeamento das URLs aos servlets
• Um elemento XML é usado para mapear o nome
público de URL conhecido pelo cliente para o seu
próprio nome interno (<servlet-mapping>)
• Outro elemento XML é usado para mapear o seu
próprio nome interno para um nome de classe
(<servlet>)
Exemplo de código XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>teste</servlet-name>
<servlet-class>teste.teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>teste</servlet-name>
<url-pattern>/teste</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
O elemento <servlet>
informa ao container quais
arquivos de classe
pertencem a uma aplicação
em particular
Exemplo de código XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>teste</servlet-name>
<servlet-class>teste.teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>teste</servlet-name>
<url-pattern>/teste</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
O elemento <servlet-name>
é usado para unir um
elemento <servlet> a um
elemento específico
<servlet-mapping>.
O usuário final NUNCA vê
este nome
Ele é usado somente em
outras partes do DDXML
Exemplo de código XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>teste</servlet-name>
<servlet-class>teste.teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>teste</servlet-name>
<url-pattern>/teste</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
No elemento <servlet-
class> você insere o nome
da classe sem acrescentar a
extensão .class
Exemplo de código XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>teste</servlet-name>
<servlet-class>teste.teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>teste</servlet-name>
<url-pattern>/teste</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Considere o elemento
<servlet-mapping> como
aquilo que o container usa
na execução, quando uma
solicitação chega para
perguntar “qual servlet eu
devo chamar para esta URL
solicitada?”
Exemplo de código XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<servlet-name>teste</servlet-name>
<servlet-class>teste.teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>teste</servlet-name>
<url-pattern>/teste</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Isto é o que o cliente vê e
usa para chegar ao servlet,
mas este é um nome criado,
que NÃO é o nome
verdadeiro da classe do
servlet
Apenas para ficar mais
claro, neste exemplo o
nome da URL-PATTERN está
igual ao nome da classe,
entretanto observe que o
correto é utilizar-se de
outro nome
DD XML
• Além de mapear urls os DD XML ainda podem:
• Personalizar atribuições de segurança
• Páginas de erro
• Bibliotecas de tags
• Informações sobre a configuração inicial
• Acesso a enterprise javabeans específicos
• Etc
• Com isso, mesmo aqueles que não são programadores
java podem personalizar sua aplicação java
• O DD oferece um mecanismo declarado para a
customização das suas aplicações, sem tocar no código
fonte!
• VISUALIZANDO O DDXML NO NETBEANS
MVC em Servlets/JSPs
• View:
– Responsável pela
apresentação.
– A view pode ser
qualquer cliente
(celular, tv, tablet,
web, etc)
– Recebe o estado do
modelo do controlador
– Recebe os dados de
entrada do usuário
que volta do
controlador
– O JSP é o view
MVC em Servlets/JSPs
• Controller:
– Retira da solicitação
do usuário os dados
de entrada e
interpreta o que eles
significam par ao
modelo
– Obriga o modelo a se
atualizar e
disponibiliza o estado
do novo modelo para
a view
– O servlet é o
controlador
MVC em Servlets/JSPs
• Modell:
– Abriga a verdadeira
lógica e o estado do
modelo
– Conhece as regras
para obtenção e
atualização do estado
– É a única parte do
sistema que se
comunica com o
banco de dados
– A classe java comum
será o modelo
MVC em Servlets/JSPs
• MVC retira a lógica de
negócio para fora do
servlet e a coloca em
um modelo, uma antiga
classe plana e
reutilizável JAVA (classe
java normal).
• O modelo é a
combinação dos
dados de negócio e
os métodos que
operam nesses
dados
Container Web e Container EJB
• Container Web: usado para componentes web
como servlets e jsps. Tomcat é apenas um Container
Web e não uma aplicação J2EE completa, pois ele
não possui um Container EJB. O Apache é um
servidor HTTP que trabalha junto com o Tomcat
para aplicações não-EJB.
• Container EJB: usado para componentes de
negócios. Um servidor de aplicação J2EE incluit
tanto o Container Web quanto o Container EJB.
WebLogic e o Jboss são dois dos servidores EJB
mais comuns. Um servidor EJB completo incorpora
inúmeras específicações (servlets, jsp, j2ee, ejb,
etc).http://www.oracle.com/technetwork/java/javae
e/ejb/index.html
Container Web e Container EJB
Exemplo
• Vamos desenvolver uma aplicação simples
usando JSP e Servlet com MVC
• A aplicação será uma especialista em
cervejas
• Os usuários poderão navegar na aplicação,
responder perguntas e receber conselhos
EXEMPLO
EXEMPLO
1. O cliente solicita a página
FORM.HTML
EXEMPLO
2. O container vai buscar a
página FORM.HTML
EXEMPLO
3. O Container retorna a
página ao browser, o usuário
responde às perguntas do
formulário
EXEMPLO
4. O browser envia os dados da
solicitação ao Container
EXEMPLO
5. O Container encontra o
servlet correto baseado na URL
e passa a solicitação para o
servlet
EXEMPLO
6. O servlet pede ajuda ao
BeerExpert (POJO)
EXEMPLO
7. A classe responsável retorna
uma resposta, a qual o servlet
adiciona ao objeto solicitação
EXEMPLO
8. O servlet encaminha a
solicitação ao JSP
EXEMPLO
9. O JSP recebe a resposta do
objeto solicitação
EXEMPLO
10. O JSP gera uma página para
o Container.
EXEMPLO
11. O Container retorna a
página par ao usuário
Como funciona o mapeamento
1. Ao preencher o formulário, o usuário clica no botão
enviar. O browser gera a URL de solicitação.
2. O Container procura o DD e encontra o servlet mapping
com o url pattern que coincide com o /SelectBeer.do. A
barra (/) representa a raíz do contexto da aplicação.
SelectBeer.do é o nome lógico de um recurso)
<servlet-mapping>
<servlet-name>Exemplo</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
Como funciona o mapeamento
3. O Container vê que o servlet name para esta url pattern é
EXEMPLO. Este não é o nome verdadeiro de um arquivo
de classe servlet. EXEMPLO é o nome de um servlet, e
não de uma CLASSE servlet. Para o Container, servlet é
aquilo que foi definido no DD, abaixo da tag <servlet>. O
nome do servlet é simplesmente o nome usado no DD,
para que as outras partes do DD possam mapeá-lo.
<servlet>
<servlet-name>Exemplo</servlet-name>
<servlet-class>teste.SelectBeer</servlet-class>
</servlet>
Como funciona o mapeamento
4. O Container procura dentro das tags <SERVLET> a tag <SERVLET-
NAME>
5. O Container usa a <SERVLET-CLASS> da tag <SERVLET> para
descobrir que classe servlet é responsável por tratar esta solicitação.
Se o servlet não tiver sido inicializado, a classe é carregada e o
servlet é inicializado.
<servlet>
<servlet-name>Exemplo</servlet-name>
<servlet-class>teste.SelectBeer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Exemplo</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
Como funciona o mapeamento
6. O Container inicia
uma nova thread
para tratar a
solicitação, e passar a
soliciação para a
thread (método
service do servlet)
7. O Container envia a
resposta de volta ao
cliente

Mais conteúdo relacionado

Mais procurados

Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuração
Eduardo Mendes
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 
Servlets 2.5
Servlets 2.5Servlets 2.5
Servlets 2.5
Eduardo Carvalho
 
Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5
Gilberto Holms
 
Introdução ao desenvolvimento web com Java
Introdução ao desenvolvimento web com JavaIntrodução ao desenvolvimento web com Java
Introdução ao desenvolvimento web com Java
FellipeFonseca
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
Denis L Presciliano
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
Denis L Presciliano
 
Benchmarking Tools
Benchmarking ToolsBenchmarking Tools
Benchmarking Tools
SEA Tecnologia
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Helder da Rocha
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
Denis L Presciliano
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
Daniel Brandão
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
Helder da Rocha
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Helder da Rocha
 
UOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJBUOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJB
Gabriel Ozeas
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
Denis L Presciliano
 
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpIntegração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Denis L Presciliano
 
Curso de JSP
Curso de JSPCurso de JSP
Curso de JSP
Marcelo Gonçalves
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Vinicius Pulgatti
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
Manoel Afonso
 

Mais procurados (20)

Java Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuraçãoJava Web 2 - Ferramentas e configuração
Java Web 2 - Ferramentas e configuração
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Servlets 2.5
Servlets 2.5Servlets 2.5
Servlets 2.5
 
Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5
 
Introdução ao desenvolvimento web com Java
Introdução ao desenvolvimento web com JavaIntrodução ao desenvolvimento web com Java
Introdução ao desenvolvimento web com Java
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
 
Benchmarking Tools
Benchmarking ToolsBenchmarking Tools
Benchmarking Tools
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Fundamentos de Objetos Remotos
Fundamentos de Objetos RemotosFundamentos de Objetos Remotos
Fundamentos de Objetos Remotos
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
UOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJBUOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJB
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpIntegração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, Gump
 
Curso de JSP
Curso de JSPCurso de JSP
Curso de JSP
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 

Destaque

Teste de Usabilidade - Nova página de pacotes
Teste de Usabilidade - Nova página de pacotesTeste de Usabilidade - Nova página de pacotes
Teste de Usabilidade - Nova página de pacotes
Ana Pires
 
Medical waste ein shams - april 2007
Medical waste   ein shams - april 2007Medical waste   ein shams - april 2007
Medical waste ein shams - april 2007
Helalley Helalley
 
Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedores
Gustavo Bitencourt
 
Controle de qualidade - Conversor de TV digital
Controle de qualidade - Conversor de TV digitalControle de qualidade - Conversor de TV digital
Controle de qualidade - Conversor de TV digital
China Link Trading
 
Testlink apresentacao
Testlink apresentacaoTestlink apresentacao
Testlink apresentacao
Priscila Calderão
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
elliando dias
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
slides_teltools
 
Test link
Test linkTest link
Test link
DialogWebdesign
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
Jeremias Araujo
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
Paulo César M Jeveaux
 
Test link
Test linkTest link
Test link
Plácido Segundo
 

Destaque (11)

Teste de Usabilidade - Nova página de pacotes
Teste de Usabilidade - Nova página de pacotesTeste de Usabilidade - Nova página de pacotes
Teste de Usabilidade - Nova página de pacotes
 
Medical waste ein shams - april 2007
Medical waste   ein shams - april 2007Medical waste   ein shams - april 2007
Medical waste ein shams - april 2007
 
Padrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedoresPadrões de projeto para o Android - Interação para desenvolvedores
Padrões de projeto para o Android - Interação para desenvolvedores
 
Controle de qualidade - Conversor de TV digital
Controle de qualidade - Conversor de TV digitalControle de qualidade - Conversor de TV digital
Controle de qualidade - Conversor de TV digital
 
Testlink apresentacao
Testlink apresentacaoTestlink apresentacao
Testlink apresentacao
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Test link
Test linkTest link
Test link
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Test link
Test linkTest link
Test link
 

Semelhante a Aplicações web parte 2

Te aula2
Te aula2Te aula2
Te aula2
rafaeljrssg
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
Alan Oliveira
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
ledsifes
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
Mateus Ramos Pereira
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
Fernando Palma
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
maxrosan
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
ThiagoFortes8
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
Rafael Benevides
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
Glaucio Scheibel
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web Services
Evaldo Junior
 
Web service
Web serviceWeb service
Web service
Junior Moraes
 
Contextos
ContextosContextos
Web Sphere
Web SphereWeb Sphere
Web Sphere
Fabricio Carvalho
 
Aplicações web parte 1
Aplicações web parte 1Aplicações web parte 1
Aplicações web parte 1
Elaine Cecília Gatto
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
Marcio Marinho
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Alexandre Tarifa
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
guestea329c
 
Aula 1
Aula 1Aula 1
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
Maurício Linhares
 

Semelhante a Aplicações web parte 2 (20)

Te aula2
Te aula2Te aula2
Te aula2
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Boas práticas com Web Services
Boas práticas com Web ServicesBoas práticas com Web Services
Boas práticas com Web Services
 
Web service
Web serviceWeb service
Web service
 
Contextos
ContextosContextos
Contextos
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Aplicações web parte 1
Aplicações web parte 1Aplicações web parte 1
Aplicações web parte 1
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
Aula 1
Aula 1Aula 1
Aula 1
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
Elaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
Elaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
Elaine Cecília Gatto
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
Elaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
Elaine Cecília Gatto
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
Elaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
Elaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
Elaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Elaine Cecília Gatto
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
Elaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
Elaine Cecília Gatto
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
Elaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Elaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
Elaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Último

AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptxAVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AntonioVieira539017
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
AntnioManuelAgdoma
 
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxSlides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
MarcosPaulo777883
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
mamaeieby
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
MessiasMarianoG
 
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdfCRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
soaresdesouzaamanda8
 
epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
MarceloMonteiro213738
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
fernandacosta37763
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
WelberMerlinCardoso
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
eaiprofpolly
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
TomasSousa7
 
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptxA dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
ReinaldoSouza57
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
SILVIAREGINANAZARECA
 
OS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdfOS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdf
AmiltonAparecido1
 
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Centro Jacques Delors
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
TomasSousa7
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
wagnermorais28
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
Manuais Formação
 

Último (20)

AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptxAVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
AVALIAÇÃO DIAGNÓSTICA - 8º ANO 2024.pptx
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
 
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxSlides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
 
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptxTreinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
Treinamento NR 38 - CORPO PRINCIPAL da NORMA.pptx
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
 
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdfCRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
CRONOGRAMA - PSC 2° ETAPA 2024.pptx (1).pdf
 
epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
 
D20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua PortuguesaD20 - Descritores SAEB de Língua Portuguesa
D20 - Descritores SAEB de Língua Portuguesa
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
 
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptxA dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
 
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
1_10_06_2024_Criança e Cultura Escrita, Ana Maria de Oliveira Galvão.pdf
 
OS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdfOS elementos de uma boa Redação para o ENEM.pdf
OS elementos de uma boa Redação para o ENEM.pdf
 
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
 
UFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdfUFCD_10949_Lojas e-commerce no-code_índice.pdf
UFCD_10949_Lojas e-commerce no-code_índice.pdf
 

Aplicações web parte 2

  • 2. CONTAINER • O container gerencia e executa o servlet. Porque? 1. Suporte para comunicações: – oferece uma maneira simples para comunicação entre os seus servlets e o servidor; – Você deve se preocupar apenas com a lógica do seu próprio negócio, que está contida no seu servlet – O container conhece o protocolo de comunicação entre ele mesmo e o servidor
  • 3. CONTAINER 2. Gerenciamento do ciclo de vida: – O container controla e a vida e a morte dos servlets; – Carrega classes, inicialização servlets, chama métodos do servlet, coleta lixo; – Você não precisa se preocupar com o gerenciamento dos recursos
  • 4. CONTAINER 3) Suporte a Multithread: – O container cria automaticamente uma nova thread em java para cada solicitação do servlet recebida. – O container cria e gerencia as thread para várias solicitações – A thread termina quando o servlet conclui a execução do método de serviço HTTP para a solicitação daquele cliente
  • 5. CONTAINER 4. Certeza de segurança – Você pode gerenciar e alterar sua segurança sem tocar, ou recompilar, seus arquivos-fonte em java, usando um arquivo XML (deployment descriptor) 5. Suporte ao JSP – O container se encarrega de traduzir o código JSP em código JAVA
  • 6. Como o container trata uma solicitação
  • 7. Como o container trata uma solicitação
  • 8. Exemplo simples de código servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class teste extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet teste</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } }
  • 9. Exemplo simples de código servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class teste extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet teste</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } 99,9% de todos os servlets desenvolvidos anulam ou o método GET ou o método POST. Isto é, apenas um dos métodos é utilizado no servlet. Como já mencionado na aula anterior, a maioria utiliza POST.
  • 10. Exemplo simples de código servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class teste extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet teste</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } 99,9% de todos os servlets desenvolvidos no mundo são HTTPSERVLETS
  • 11. Exemplo simples de código servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class teste extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet teste</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } REQUEST: é aqui que o seu servlet consegue as referências dos objetos solicitação RESPONSE: é aqui que o seu servlet consegue as referências dos objetos reposta (ambos criados pelo container)
  • 12. Exemplo simples de código servlet import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class teste extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet teste</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet teste at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } } Uma forma de imprimir a resposta do servlet no navegador – não é utilizado no mundo real com frequencia (utilize apenas para testes). PrintWriter imprimirá a resposta que o seu servlet recebe do container e, ainda poderá escrever um código HTML no objeto de resposta.
  • 13. Testando um Servlet no Netbeans • Criar uma aplicação web no netbeans • Criar um servlet • Sem fazer qualquer tipo de alteração nos arquivos criados, executar o arquivo • O navegador será aberto automaticamente com a resposta • Mais detalhes serão vistos na aula sobre servlets • http://docs.oracle.com/javaee/6/api/javax/s ervlet/package-summary.html
  • 14. Como o Container encontra o Servlet? • A URL que chega como parte da solicitação do cliente é mapeada para um servlet específico no servidor • A solicitação do usuário deve mapear para um servlet específico e cabe ao desenvolvedor entender e configurar este mapeamento.
  • 15. Um servlet pode ter três nomes • RESUMO: 1. Nome da URL conhecido pelo cliente 2. Nome interno secreto conhecido pelo distribuidor 3. Nome do arquivo verdadeiro
  • 16. Um servlet pode ter três nomes • Um servlet tem um nome do caminho para o arquivo (um caminho para um arquivo de classe real) • O desenvolvedor da classe do servlet escolhe o nome da classe e o nome do pacote que define parte da estrutura de diretórios • O local no servidor define o nome completo do caminho • Entretanto, qualquer pessoa que distribua o servlet também pode atribuir a ele um nome especial de distribuição
  • 17. Um servlet pode ter três nomes • Um nome especial de distribuição é um nome interno secreto, que não precisa ser igual ao nome da classe ou do arquivo • Ele pode ser igual ao nome da classe ou o caminho relativo para o arquivo da classe, mas também pode ser diferente • O servlet tem um nome público de URL, que é o nome que o cliente conhece, o nome codificado no HTML. • Quando o usuário clicar em um link, este nome público de URL é enviado ao servidor na solicitação HTTP, e é ele quem vai até o servlet correspondente
  • 18. Um servlet pode ter três nomes • Mapear o nome dos servlets aumenta a flexibilidade e a segurança da sua aplicação • Por este motivo não usamos o mesmo nome para o servlet • Escrevendo o caminho verdadeiro em seus arquivos, terá problemas quando precisar reorganizar a aplicação em novos diretórios • O cliente não precisa saber o caminho verdadeiro, sem contar que ele podem tentar acessar diretamente o servlet
  • 19. Deployment Descriptor XML • O DD é criado para informar ao Container como executar seus servlets e JSPs. • É usado para mapeamento dos nomes e mapeamento das URLs aos servlets • Um elemento XML é usado para mapear o nome público de URL conhecido pelo cliente para o seu próprio nome interno (<servlet-mapping>) • Outro elemento XML é usado para mapear o seu próprio nome interno para um nome de classe (<servlet>)
  • 20. Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>teste</servlet-name> <servlet-class>teste.teste</servlet-class> </servlet> <servlet-mapping> <servlet-name>teste</servlet-name> <url-pattern>/teste</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> O elemento <servlet> informa ao container quais arquivos de classe pertencem a uma aplicação em particular
  • 21. Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>teste</servlet-name> <servlet-class>teste.teste</servlet-class> </servlet> <servlet-mapping> <servlet-name>teste</servlet-name> <url-pattern>/teste</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> O elemento <servlet-name> é usado para unir um elemento <servlet> a um elemento específico <servlet-mapping>. O usuário final NUNCA vê este nome Ele é usado somente em outras partes do DDXML
  • 22. Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>teste</servlet-name> <servlet-class>teste.teste</servlet-class> </servlet> <servlet-mapping> <servlet-name>teste</servlet-name> <url-pattern>/teste</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> No elemento <servlet- class> você insere o nome da classe sem acrescentar a extensão .class
  • 23. Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>teste</servlet-name> <servlet-class>teste.teste</servlet-class> </servlet> <servlet-mapping> <servlet-name>teste</servlet-name> <url-pattern>/teste</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> Considere o elemento <servlet-mapping> como aquilo que o container usa na execução, quando uma solicitação chega para perguntar “qual servlet eu devo chamar para esta URL solicitada?”
  • 24. Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <servlet> <servlet-name>teste</servlet-name> <servlet-class>teste.teste</servlet-class> </servlet> <servlet-mapping> <servlet-name>teste</servlet-name> <url-pattern>/teste</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> Isto é o que o cliente vê e usa para chegar ao servlet, mas este é um nome criado, que NÃO é o nome verdadeiro da classe do servlet Apenas para ficar mais claro, neste exemplo o nome da URL-PATTERN está igual ao nome da classe, entretanto observe que o correto é utilizar-se de outro nome
  • 25. DD XML • Além de mapear urls os DD XML ainda podem: • Personalizar atribuições de segurança • Páginas de erro • Bibliotecas de tags • Informações sobre a configuração inicial • Acesso a enterprise javabeans específicos • Etc • Com isso, mesmo aqueles que não são programadores java podem personalizar sua aplicação java • O DD oferece um mecanismo declarado para a customização das suas aplicações, sem tocar no código fonte! • VISUALIZANDO O DDXML NO NETBEANS
  • 26. MVC em Servlets/JSPs • View: – Responsável pela apresentação. – A view pode ser qualquer cliente (celular, tv, tablet, web, etc) – Recebe o estado do modelo do controlador – Recebe os dados de entrada do usuário que volta do controlador – O JSP é o view
  • 27. MVC em Servlets/JSPs • Controller: – Retira da solicitação do usuário os dados de entrada e interpreta o que eles significam par ao modelo – Obriga o modelo a se atualizar e disponibiliza o estado do novo modelo para a view – O servlet é o controlador
  • 28. MVC em Servlets/JSPs • Modell: – Abriga a verdadeira lógica e o estado do modelo – Conhece as regras para obtenção e atualização do estado – É a única parte do sistema que se comunica com o banco de dados – A classe java comum será o modelo
  • 29. MVC em Servlets/JSPs • MVC retira a lógica de negócio para fora do servlet e a coloca em um modelo, uma antiga classe plana e reutilizável JAVA (classe java normal). • O modelo é a combinação dos dados de negócio e os métodos que operam nesses dados
  • 30. Container Web e Container EJB • Container Web: usado para componentes web como servlets e jsps. Tomcat é apenas um Container Web e não uma aplicação J2EE completa, pois ele não possui um Container EJB. O Apache é um servidor HTTP que trabalha junto com o Tomcat para aplicações não-EJB. • Container EJB: usado para componentes de negócios. Um servidor de aplicação J2EE incluit tanto o Container Web quanto o Container EJB. WebLogic e o Jboss são dois dos servidores EJB mais comuns. Um servidor EJB completo incorpora inúmeras específicações (servlets, jsp, j2ee, ejb, etc).http://www.oracle.com/technetwork/java/javae e/ejb/index.html
  • 31. Container Web e Container EJB
  • 32. Exemplo • Vamos desenvolver uma aplicação simples usando JSP e Servlet com MVC • A aplicação será uma especialista em cervejas • Os usuários poderão navegar na aplicação, responder perguntas e receber conselhos
  • 34. EXEMPLO 1. O cliente solicita a página FORM.HTML
  • 35. EXEMPLO 2. O container vai buscar a página FORM.HTML
  • 36. EXEMPLO 3. O Container retorna a página ao browser, o usuário responde às perguntas do formulário
  • 37. EXEMPLO 4. O browser envia os dados da solicitação ao Container
  • 38. EXEMPLO 5. O Container encontra o servlet correto baseado na URL e passa a solicitação para o servlet
  • 39. EXEMPLO 6. O servlet pede ajuda ao BeerExpert (POJO)
  • 40. EXEMPLO 7. A classe responsável retorna uma resposta, a qual o servlet adiciona ao objeto solicitação
  • 41. EXEMPLO 8. O servlet encaminha a solicitação ao JSP
  • 42. EXEMPLO 9. O JSP recebe a resposta do objeto solicitação
  • 43. EXEMPLO 10. O JSP gera uma página para o Container.
  • 44. EXEMPLO 11. O Container retorna a página par ao usuário
  • 45. Como funciona o mapeamento 1. Ao preencher o formulário, o usuário clica no botão enviar. O browser gera a URL de solicitação. 2. O Container procura o DD e encontra o servlet mapping com o url pattern que coincide com o /SelectBeer.do. A barra (/) representa a raíz do contexto da aplicação. SelectBeer.do é o nome lógico de um recurso) <servlet-mapping> <servlet-name>Exemplo</servlet-name> <url-pattern>/SelectBeer.do</url-pattern> </servlet-mapping>
  • 46. Como funciona o mapeamento 3. O Container vê que o servlet name para esta url pattern é EXEMPLO. Este não é o nome verdadeiro de um arquivo de classe servlet. EXEMPLO é o nome de um servlet, e não de uma CLASSE servlet. Para o Container, servlet é aquilo que foi definido no DD, abaixo da tag <servlet>. O nome do servlet é simplesmente o nome usado no DD, para que as outras partes do DD possam mapeá-lo. <servlet> <servlet-name>Exemplo</servlet-name> <servlet-class>teste.SelectBeer</servlet-class> </servlet>
  • 47. Como funciona o mapeamento 4. O Container procura dentro das tags <SERVLET> a tag <SERVLET- NAME> 5. O Container usa a <SERVLET-CLASS> da tag <SERVLET> para descobrir que classe servlet é responsável por tratar esta solicitação. Se o servlet não tiver sido inicializado, a classe é carregada e o servlet é inicializado. <servlet> <servlet-name>Exemplo</servlet-name> <servlet-class>teste.SelectBeer</servlet-class> </servlet> <servlet-mapping> <servlet-name>Exemplo</servlet-name> <url-pattern>/SelectBeer.do</url-pattern> </servlet-mapping>
  • 48. Como funciona o mapeamento 6. O Container inicia uma nova thread para tratar a solicitação, e passar a soliciação para a thread (método service do servlet) 7. O Container envia a resposta de volta ao cliente