1. JSP é convertida para Servlet que é compilado e carregado para aguardar requisições.
2. A primeira requisição a uma página JSP é mais lenta, mas subsequentemente o processo é mais rápido se o código não foi alterado.
3. Uma página JSP passa por fases de tradução, compilação, carga, instanciação e execução do método _jspService() a cada requisição.
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da FACOMP.
Aula 1 - curso java web - JSP Java Server PageEvandro Júnior
JSP - java server page - Tecnologia orientada a criar páginas web com programação em Java. Java é em essência uma linguagem multiplataforma. HTML + XML + scripts de servidor em sintaxe Java.
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da FACOMP.
Aula 1 - curso java web - JSP Java Server PageEvandro Júnior
JSP - java server page - Tecnologia orientada a criar páginas web com programação em Java. Java é em essência uma linguagem multiplataforma. HTML + XML + scripts de servidor em sintaxe Java.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
Conectar-se a um banco de dados com Java é feito de maneira elegante. Para evitar que cada banco tenha
a sua própria API e conjunto de classes e métodos, temos um único conjunto de interfaces muito bem definidas
que devem ser implementadas.
Palestra sobre JavaFX 1.2 apresentada no Sun Day da II Semana da Computação da UFPB. Apresenta uma introdução sobre JavaFX e as novidades do JavaFX 1.2.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
Conectar-se a um banco de dados com Java é feito de maneira elegante. Para evitar que cada banco tenha
a sua própria API e conjunto de classes e métodos, temos um único conjunto de interfaces muito bem definidas
que devem ser implementadas.
Palestra sobre JavaFX 1.2 apresentada no Sun Day da II Semana da Computação da UFPB. Apresenta uma introdução sobre JavaFX e as novidades do JavaFX 1.2.
JSP Portlets é a forma mais simples de se criar portlets no Liferay Portal. Estes slides, parte do curso de Liferay ministrado pela SEA Tecnologia, ilustram sua criação e detalha algumas de suas estruturas internas.
Aqui são apresentados as técnicas de Desenvolvimento com Jakarta Cactus.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Apresentação que abordou os conceitos do Java EE assim como as novidades da versão 6, focando em Servlets 3.0 e JSF 2.0, mostrando exemplos práticos e aplicações do zero. Ao final, foi apresentado em execução alguns dos melhores RIAs do mercado.
Apresentação sobre a linguagem de expressão (EL) 2.0, que integra os materiais didáticos do curso DAWJ - Desenvolvimento de Aplicativos Web com Servlet e JavaServer Pages, um dos cursos totalmente a distância oferecidos pelo prof. Antonio Passos. Para mais informações, acesse http://www.antoniopassos.com/.
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
Palestra dada por Diego Tremper no CONAPHP 2008 - Congresso Nacional de PHP que ocorreu em São Paulo nos dias 18 e 19 de Outubro dentro do CONISLI 2008
Elementos essenciais de CSS para desenvolvedores web. Exemplos de páginas HTML com estilos definidos via CSS. Inclui botões, fontes, layouts, frameworks e bibliotecas. Vários links apontam para fontes adicionais.
Visão geral de HTML5 tem como objetivo fornecer conceitos fundamentais para o programador responsável pelo desenvolvimento do "front end" de um sistema.
Arquétipo é um conceito relevante para a interoperabilidade de sistemas de informação em saúde. Essa apresentação contribui com a definição desse conceito, em geral, "obscuro" em um primeiro momento.
Um SGBD para a Saúde. Banco de dados em saúde. Sistema Gerenciador de Banco de Dados em Saúde. openEHR. Padrões de interoperabilidade em saúde. Interoperabilidade semântica.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
2. Programa
1. Minha Primeira Página JSP
2. Sintaxe de JSP
3. Ciclo de vida de página JSP
4. Diretivas
5. Ações
6. Variáveis implícitas
7. Configuração de uma página JSP
2
4. Minha primeira página
JSP
Um simples contador
[http://exemplos.googlecode.com/svn/trunk/scwcd/jsp01/]
5. O que é JSP?
JavaServer Page = JSP
Tecnologia
Combina HTML/XML e Java
Objetivo: retornar conteúdo dinâmico para
um cliente
Não há JSP sem servlets
5
9. Elementos de uma página JSP
Diretiva
<%@ diretivas %>
Declaração
<%! declaração em Java %>
Scriptlet
<% código em Java %>
Expressão
<%= expressão em Java %>
Ação
<jsp:acaoNome />
Comentário
<%-- Qualquer texto --%>
9
10. <%@ diretiva %>
Fornece informação geral acerca da página
JSP
Tipos: page, include, taglib
<%@ page language=“java” %>
Informa que Java é usada como linguagem de
script
<%@ include file=“copyright.html” %>
Conteúdo do arquivo inserido na página corrente
<%@ taglib prefix=“teste” uri=“taglib.tld” %>
Associa prefixo a uma biblioteca de tags
10
11. <%! declaração %>
Declara e define variáveis e métodos
<%! int contador = 0; %>
Define a variável contador com valor inicial 0
Isto é feito uma única vez por página
O valor é mantido em chamadas posteriores
<%! String str = “ Funciona mesmo! “;
String getStr() {
return str.trim();
}
%>
Declara str e o método getStr().
11
12. <% scriptlets %>
Código em Java embutido em página JSP
<% contador = contador + 1; %>
Adiciona um ao valor de contador
Toda vez que se tem acesso à página o
código em Java é executado
<% out.print(“<html><body>”);
out.print(“Bem-vindo ao curso JSP”);
out.print(“</body></html>”);
%>
Gera página HTML de boas-vindas ao curso.
12
13. <%= expressão %>
Representa expressão em Java
<%= contador %>
É substituído pelo valor da variável
Uma expressão é avaliada toda vez que se
tem acesso à página
<%= 28 %>
Valor 28
<%= 27.5 * salario / 100 %>
27.5% do salário
<%= str.length() %>
Tamanho da string
13
14. <jsp:acao atributos />
Comandos enviado para a máquina JSP
<jsp:include page=“copyright.jsp” />
Inclua a saída de copyright.jsp nesta página
Forma geral
<jsp:acaoNome atributos />
Ações padrão
jsp:include
jsp:forward
jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:plugin
14
15. <%-- comentário --%>
<%-- Confirmar com Fulano --%>
Comentários não afetam a saída da página
Observe a página JSP abaixo...
<html><body>
<!-- Comentário em HTML -->
<%-- Comentário em JSP --%>
<h1>Funciona ambos</h1>
</body></html>
Comentário em HTML e JSP podem coexistir
em uma mesma página
15
17. Página JSP é um Servlet
Toda página JSP é executada por um servlet
Seqüência
Máquina JSP gera arquivo Java correspondente à
página JSP (este arquivo é um Servlet)
Máquina JSP compila o Servlet gerado
Máquina JSP carrega em memória o Servlet
Máquina JSP executa o Servlet como qualquer
outro
Saída é enviada para o cliente
17
18. Resumo
1. JSP é convertida para Servlet
2. Servlet é compilado
3. Servlet é carregado
4. Aguarda requisição
Em conseqüência,...
A primeira vez que uma página JSP é
requisitada a resposta é “lenta”, comparada
com as demais. Após a primeira vez,...
Máquina compara data de criação da página
e do Servlet correspondente gerado. O
processo é refeito apenas quando o fonte é
mais recente.
18
19. Fases do ciclo de vida de página JSP
Tradução
Servlet correspondente é gerado da página JSP
Compilação
Servlet gerado é compilado
Carga
Classe compilada é carregada
Instanciação
Instância do Servlet é criada
jspInit()
Método chamado antes de qualquer outro
_jspService()
Método chamado para cada requisição
jspDestroy()
Chamado quando contêiner decide remover Servlet
19
20. Compilação
Servlets gerados/compilados (Tomcat)
%CATALINA_HOME%workCatalinalocalhost
Executa compilador (reduzir tempo de resposta)
http://localhost:8080/app/p.jsp?jsp_precompile=true
Parâmetros com prefixo jsp são reservados
Prática
Antes de qualquer requisição a uma página JSP, logo após
início do contêiner, verifique que não há arquivo gerado
Faça uso da URL ilustrada acima (verifique o resultado)
Consulte o conteúdo do arquivo gerado pelo compilador sem
fazer requisições à página
20
21. Contador “persistente”
Problema
O contador do primeiro exemplo (jsp01) não
“guarda” os valores entre execuções da
aplicação. Reescreva-o para persistir o valor
do contador entre execuções distintas.
Solução
Guardar o valor do contador em meio estável
(arquivo)
[http://exemplos.googlecode.com/svn/trunk/scwcd/jsp02/]
21
22. contador.jsp (jsp02) (parte 1/6)
“Esqueleto”
<html>
<body>
<%-- diretivas omitidas --%>
<%-- declarações omitidas --%>
<%-- scriptlet omitido --%>
Esta é a requisição de número <%= contador
%> que está sendo atendida.
</body>
</html>
22
23. contador.jsp (jsp02) (parte 2/6)
“Esqueleto” anterior sugere que precisamos:
contador (declaração)
Iniciar este contador com valor armazenado em
arquivo. Caso seja a primeira vez então criar
arquivo com valor 0 (jspInit())
Precisamos criar arquivo com valor fornecido
Precisamos carregar valor de arquivo
Ao fechar o Servlet, enviar contador para arquivo
(jspDestroy())
Todos os elementos acima podem ser
colocados em uma <%! declaração %>
23
24. contador.jsp (jsp02) (parte 3/6)
public void jspInit() {
try {
ServletContext sc = getServletContext();
contadorArq = sc.getRealPath(quot;/WEB-INF/contador.dbquot;);
if (!new File(contadorArq).exists()) sendInt(0);
contador = getInt();
} catch (Exception e) {
log(quot;Erro ao ler arquivo de contadorquot;, e);
}
}
public void jspDestroy() {
try {
sendInt(contador);
} catch (Exception e) {
log(quot;Erro ao salvar arquivo de contadorquot;, e);
}
}
24
25. contador.jsp (jsp02) (parte 4/6)
public void sendInt(int v) throws Exception {
FileOutputStream fos = new FileOutputStream(contadorArq);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(v);
dos.close();
}
public int getInt() throws Exception {
FileInputStream fis = new FileInputStream(contadorArq);
DataInputStream dis = new DataInputStream(fis);
contador = dis.readInt();
dis.close();
return contador;
}
25
26. contador.jsp (jsp02) (parte 5/6)
Declaração resumida
<%!
int contador = 0;
String contadorArq = null;
// corpos dos métodos omitidos
public void jspInit() {}
public void jspDestroy() {}
public void sendInt(int v) throws Exception {}
public int getInt() throws Exception {}
%>
26
27. contador.jsp (jsp02) (parte 6/6)
Diretivas omitidas
<%@ page language=quot;javaquot; %>
<%@ page import=quot;java.io.*quot; %>
Indicam que script será em Java
Requisita a importação do pacote indicado
(serviços de I/O serão usados)
Scriptlet omitido (executado a cada requisição)
<% contador++; %>
27
28. Resultado após várias requisições
(jsp02)
Este resultado foi obtido mesmo após várias interrupções
e reinícios do Tomcat.
28
31. horacorrente.jsp (jsp03)
<html>
<body>
<%@ page language=quot;javaquot; %>
<%@ page import=quot;java.io.*quot; %>
<%@ page import=quot;java.text.*quot; %>
<%@ page import=quot;java.util.*quot; %>
<%! String data; %>
<%
Locale l = new Locale(quot;ptquot;, quot;BRquot;);
DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL, l);
data = df.format(new Date());
%>
Hora corrente no servidor: <%= data %>.
</body>
</html>
O que está em azul é executado em toda requisição à página.
Uma versão alternativa é ...
[http://exemplos.googlecode.com/svn/trunk/scwcd/jsp03/] 31
32. horacorrente.jsp (jsp04)
<html>
<body>
<%@ page language=quot;javaquot; %>
<%@ page import=quot;java.text.*quot; %>
<%@ page import=quot;java.util.*quot; %>
<%! DateFormat df = null; %>
<%! public void jspInit() {
Locale l = new Locale(quot;ptquot;, quot;BRquot;);
df = DateFormat.getTimeInstance(DateFormat.FULL, l);
} %>
Hora corrente no servidor: <%= df.format(new Date()) %>.
</body>
</html>
Menos operações serão executadas para cada requisição.
Há, por outro lado, memória ocupada pelo objeto DateFormat.
[http://exemplos.googlecode.com/svn/trunk/scwcd/jsp04/] 32
44. + 1 exemplo [jsp09.zip]
endereco.jsp
<html>
<body>
A requisição desta página partiu do
endereço IP <%= request.getRemoteAddr() %>.
</body>
</html>
Resultado
Se você estiver executando o tomcat localmente,
provavelmente o endereço será 127.0.0.1
44
45. Forward/include [jsp10.zip]
Problema
Aplicação que responde por default em /jsp10
(index.jsp)
Uma página (pagina.jsp) deverá consultar o
parâmetro “use”. Se o argumento é “include”,
então inclua “inclusao.jsp”. Caso contrário,
redirecione para “redireciona.jsp”. Se nenhum
argumento é fornecido, então redirecione para
arg.jsp.
45
49. inclusao.jsp [jsp10.zip]
<%@ page import=quot;java.util.Datequot; %>
Inclui informações ao que já está sendo
gerado.
<br>Gerado em <%= new Date() %>
<br>Vá para
<a href=quot;pagina.jspquot;>pagina.jsp</a>.
49