SlideShare une entreprise Scribd logo
1  sur  48
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

Contenu connexe

Tendances

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çãoEduardo 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 1Eduardo Mendes
 
Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Gilberto 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 JavaFellipeFonseca
 
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 appletsDenis 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 CactusDenis L Presciliano
 
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
 
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 ServletsEduardo Mendes
 
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 7Helder 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 OpenEJBGabriel Ozeas
 
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, GumpDenis L Presciliano
 
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 JSPManoel Afonso
 

Tendances (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
 

En vedette

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 pacotesAna Pires
 
Medical waste ein shams - april 2007
Medical waste   ein shams - april 2007Medical waste   ein shams - april 2007
Medical waste ein shams - april 2007Helalley 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 desenvolvedoresGustavo 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 digitalChina Link Trading
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testeselliando dias
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlinkslides_teltools
 
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 softwareJeremias Araujo
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 

En vedette (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
 

Similaire à Container gerencia servlets

Similaire à Container gerencia servlets (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 - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
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
 

Plus 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 etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine 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 EPPCElaine 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.pptxElaine 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 UFSCarElaine 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çõesElaine 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 ClassificationElaine 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.pdfElaine 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 escalonamentoElaine 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 bitsElaine 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çãoElaine Cecília Gatto
 

Plus 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
 

Dernier

Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarIedaGoethe
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 

Dernier (20)

Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogar
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 

Container gerencia servlets

  • 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