AULA 01Applets - Introdução
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Marcelo Henrique dos SantosMestrado em Educação (em andamento)
MBA em Negócios em Mídias DigitaisMBA em Marketing e Vendas
Especialista em games Bacharel em Sistema de Informação
Email: [email protected]
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Execução no Cliente (Browser)
• HTML
• CSS
• Javascript
• XML
• XSLT
• Tableless
• ...JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
HTML
<html>
<head>
<title>Título da Página</title>
</head>
<body>
Esta é minha primeira página.
</body>
</html>
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
HTML
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
UTF-8
Em 2014 foi constatado que cerca de 83,6% das páginas web estavam utilizando esse encode. Sua popularização se deu pelo fato dele reconhecer bastante caracteres (aproximadamente 65.536).
Alguns profissionais estão utilizando o encode ISO-8859-1 por que ele é mais performático (cada caracterepesa aproximadamente a metade do seucorrespondente no UTF-8).
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
UTF-8
Esse segundo encode apareceu nesse mesmo relatórioem segundo lugar com 8.3% das páginas.
Ele não é uma péssima opção, uma vez que ele cobretodos os caracteres do nosso idioma. Mas se você fortrabalhar em uma aplicação com chances deinternacionalização, o padrão UTF-8 é o mais indicado.
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
CSS
<html>
<head>
<link href="pagina.css" rel="stylesheet"
type="text/css" />
<title>Título da Página</title>
</head>
<body>
Esta é minha primeira página.
</body>
</html>
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
CSS – “pagina.css”
body {
background-color : #ffffff;
color : #000000;
}
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
JavaScript
<html>
<body>
<script type="text/javascript">
for (i = 0; i < 5; i++)
{
document.write("Alo você !!!")
document.write("<br />")
}
</script>
</body>
</html>
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
JavaScript
<html>
<head>
<script type="text/javascript">
function alo(k)
{
var s = "";
for (i = 0; i < k; i++)
{
s = s + "Alo você !!!"
s = s + "<br />"
}
return s
}
</script>
<title>Alouuuuuu</title>
</head>
<body>
<script type="text/javascript">
document.write(alo(4))
</script>
</body>
</html>
XML
<?xml version="1.0" encoding="UTF-8"?>
<livros>
<livro isbn=“0001”>
<titulo>JavaServer Pages</titulo>
<autor>Nick Todd</autor>
<editora>Campus</editora>
<assunto>JSP</assunto>
</livro>
<livro isbn=“0002”>
<titulo>Meu pé de laranja lima</titulo>
<editora>Vozes</editora>
<autor>Brilhante</autor>
</livro>
</livros>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
<xsl:template match="/">
<html><head><title>Meus livros</title></head>
<body>
<table border="1">
<tr><th>Título</th><th>Autor</th></tr>
<xsl:for-each select="//livro">
<tr>
<td><xsl:value-of select="titulo"/></td>
<td><xsl:value-of select="autor"/></td>
</tr>
</xsl:for-each>
</table></body></html>
</xsl:template>
</xsl:stylesheet>
Execução no Cliente (Browser)
• “Inferno” dos web-designers: compatibilidade entre browsers!
– Firefox
– Opera
– Internet Explorer (IECA)
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Execução no Servidor
• Necessidade dos websites oferecerem conteúdos dinâmicos e atualizados
• Ciclo de vida da informações trafegadas entre servidor e cliente (escopo)
• Linguagens de script
– JSP
– ASP
– PHP
– Perl
Execução no Servidor_ PHP ASP JSP
General PHP Hypertext
Preprocessor
Active Server
Pages
Java Server Pages
supported
language(s)
own script
language
JScript, VBScript
or 5 different
Java
specifications runs on almost
any platform
webserver
extension (IIS)
no platform restrictions
functionality functionality by
modules
modularly built of
COM-objects
reusable components
and tags
security complex code ->
complex security;
open source
complex code ->
complex security;
no open source
complex code -> complex
security;
open source
performance interpreted
language
precompiled
code(?)
compiled to Servlets in
bytecode (interpreted)
database
connectivity
MySQL-drivers
included
ActiveX data
objects(ADO)
by "JDBC" (MSQL,
Oracle, Sybase)
Execução no Servidor
• Servidores Web
– IIS
– Apache
– Tomcat
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
IIS
• Internet Information Server
• Microsoft
• Famoso por apresentar diversos problemas de segurança no passado
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Apache
• Servidor web mais utilizado no mundoatualmente (Fonte: Netcraft)
• Software Livre
• Escrito em C
• Executa diversas linguagens script: PhP, Perl,ASP, etc.
• Possui suporte nativo ao MySQL
• Permite definição de módulos para extensãodo servidor– Exemplo: suporte para JSP
Tomcat
• Implementação de referência paraJSP/Servlets (Java)
• Escrito em Java
• Devido à sua simplicidade e fácil instalação, écomumente utilizado em cursos paradesenvolvimento web
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Servidores de Aplicação
• Estes servidores oferecem recursos comuns adiferentes aplicações (autenticação, conexão à BDs,suporte a transação, etc)
• Pensando-se numa arquitetura em camadas, umservidor de aplicação é um servidor que hospeda eoferece serviços para outras aplicações
• Com isso, espera-se que os desenvolvedores poupemtempo para implementação da lógica do negócio
Servidores de Aplicação
• Exemplos:– Java: JBoss (Red Hat), WebLogic (BEA), WebSphere (IBM),
Geronimo (Apache), Sun Application Server (SUN), Glassfish (baseado no da SUN)
– Microsoft: .NET Framework
Afins
• RSS
• Web Services
• AJAX
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
RSS
• Really Simple Syndication
• Formato padrão, baseado em
XML
• Tem sido adotado por websites que disponibilizam informações na rede, como sites de jornais, blogs, sites institucionais, etc.
• Hoje existem diversos leitores (agregadores) de RSS: browsers, programas de e-mail, softwares, etc ..
RSS
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Web Services
• Proposta:– Integração de sistemas através do uso de XML
sobre HTTP
• Tecnologias:– XML
– WSDL (Web Service Description Language)
– SOAP (Simple Object Access Protocol)
• Vantagens:– Integração com baixo acoplamento
– Independe das linguagens de implementação
AJAX
• Asynchronous Javascript And XML
• Construção de páginas mais dinâmicas através de chamadas assíncronas ao servidor
• Não é uma tecnologia, mas sim uma combinação de tecnologias
– XHTML + CSS + XML + XSLT + XMLHttpRequest e JavaScript
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Padrões de Projeto
• Um padrão de projeto é uma solução comumpara um problema comum encontrado nodesenvolvimento de software (Sun);
• Sedimentação do conceito com o lançamentodo livro: “Design Patterns: Elements ofReusable Object-Oriented Software”;
• Não está amarrado a nenhuma linguagem OO.
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Padrões de Projeto
• A utilização desses padrões usualmente implica em algumas vantagens:
– Facilidade de comunicação: padrões possuem nomes, os quais resumem uma solução que deve ser de conhecimento comum entre equipes de desenvolvimento;
– Credibilidade: sua implementação estará utilizando soluções amplamente testadas e aprovadas;
– Facilidade de manutenção: padrões tendem a reduzir o acoplamento entre componentes, o que implica num sistema de fácil manutenção
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
AULA 01Applets –
Implementação de um Applet
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Tópicos Abordados
• Paradigma de Requisições Web
• Conceito de Applet
• Implementação de um Applet
• Exemplos de Applets
• Limitações
• Aspectos de Segurança
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Paradigma de Requisições Web
• Cliente envia requisição
para um Servidor
• Servidor responde
requisição de um Cliente
• Formatos de resposta:
– Dados estáticos
– Dados processados no Servidor
– Dados a serem processados no Cliente
Paradigma de Requisições Web Formatos de Resposta
• Dados estáticos:
– HTML básico, estático
• Dados processados no
Servidor
– Programas Java que rodam
no servidor e constróem
respostas para requisições (servlets)
• Dados processados no Cliente
– Programas Java que rodam nos clientes (applets)
Motivação Inicial de Java
• Java foi pensada, inicialmente, como uma linguagemque permitiria a execução de programas seminstalação
• Estes programas (bytecodes) seriam baixados dainternet e executados na máquina cliente
• Ou seja, para tal, a máquina cliente necessitaria deacesso à internet e da máquina virtual (JVM) paraexecução dos bytecodes
• Applets são uma forma de realização deste objetivo
Conceito de Applet
• Um applet é um programa Java que pode ser incluído em uma página HTML da mesma forma que uma imagem ou algum outro recurso.
• Exemplo (HTML básico):
<html>
<head>
<title>HTML Básico</title>
</head>
<body>
Olá mundo !!!
</body>
</html>
Conceito de Applet• Exemplo (HTML incluindo uma imagem):
• O arquivo .html deve estar no mesmo diretório que a imagem, neste exemplo
<html>
<head>
<title>HTML com imagem incluída</title>
</head>
<body>
<img src="maca.jpg"
title="maca“/>
</body>
</html>
Conceito de Applet
• Exemplo (HTML incluindo um applet):
<html>
<head>
<title>HTML incluindo um applet</title>
</head>
<body>
<applet code=aulas.MeuApplet width=800
height=600/>
</body>
</html>
Conceito de Applet• Apesar do HTML com a inclusão da imagem ter obtido o
mesmo resultado do applet, o resultado do applet foi obtidopela classe “aulas.MeuApplet”.
• Observe que não fazemos referência explícita ao arquivo“maca.jpg”, como no exemplo da imagem.
<html>
<head>
<title>HTML incluindo um applet</title>
</head>
<body>
<applet code=aulas.MeuApplet width=800
height=600/>
</body>
</html>
Conceito de Applet
• A tag <applet> possui os atributos code (classe que implementa o applet), width (largura do applet) e height (altura do applet), os quais são obrigatórios
• Outros atributos: align (alinha o applet dentro da página web); name (para ser referenciado dentro da página html); codebase(diretório base para referenciar um applet); archive (o applet é distribuído como um JAR)
<html>
<head>
<title>HTML incluindo um applet</title>
</head>
<body>
<applet code=aulas.MeuApplet width=800
height=600/>
</body>
</html>
Execução do Applet
• Para execução do applet, crie um arquivo htmlcom o conteúdo apresentado
• Coloque o código java compilado (.class) nomesmo diretório do arquivo html
• Caso o código java seja definido dentro de umpacote (package), inclua o código compiladona hierarquia de diretórios equivalente aopacote
Execução do Applet
• Por exemplo, se o código java está definido nopacote “package cursojava.applets;”, e o htmlestá no diretório c:\htmls, os .class deverãoestar em: “c:\htmls\cursojava\applets”
Execução do Applet
• Inicialmente, os browsers disponibilizavaminternamente pequenos interpretadores paraJava
• A tecnologia Java Plug-in estende afuncionalidade de um browser, permitindoque applets e outros recursos sejamexecutados utilizando a JRE da máquina
Execução do Applet
• Quando um navegador não reconhece umapplet, as tags <applet> são ignoradas e, oque está dentro delas, é exibido
• Com isso, este se torna um local adequadopara colocar avisos de mal funcionamento
Execução do Applet
<html>
<head>
<title>HTML incluindo um applet</title>
</head>
<body>
<applet code=aulas.MeuApplet width=800 height=600>
Neste local deveria aparecer um applet !!
</applet>
</body>
</html>
Implementação de um Applet
• Para implementar um applet, devemos estender uma das 2 últimas classes da hierarquia abaixo:
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.Applet
javax.swing.JApplet
● http://java.sun.com/j2se/1.4.2/docs/api/java/applet/Applet.html
Implementação de um Appletjava.applet.Applet
• Sub-classe de Panel, do pacote gráfico awt
• É, essencialmente, um painel inserido em umapágina HTML, num navegador
• Embora restrito em algumas funcionalidades(por uma questão de segurança), podeinteragir com o usuário como qualqueraplicação gráfica awt
Implementação de um Applet
ALGUNS MÉTODOS DA CLASSE JAVA.APPLET.APPLET
• void init() / void destroy()
– Métodos duais que inicializam/destróem um applet
– O método init() é chamado quando uma página com uma appleté carregada
– O método destroy() é chamado quando o navegador é fechado
• void start() / void stop()
– Métodos acionados quando um applet deve ser executado/interrompido
– O método start() é chamado quando uma página que contém um applet é aberta (imediatamente após o init() e nas cargas seguintes da página)
– O método stop() é chamado quando o usuário deixa a página que possui o applet
Implementação de um Applet
ALGUNS MÉTODOS DA CLASSE JAVA.APPLET.APPLET
• URL getCodeBase()– Retorna a URL base do diretório de onde o applet foi executado
• String getParameter(String name)– Recupera o valor de um parâmetro passado no HTML
• void play(URL url)– Toca um arquivo de áudio referenciado por um url absolutovoid
• play(URL url, String file)– Toca um arquivo de áudio file referenciado de forma relativa à
url• Image getImage(URL url, String name)
– Retorna a imagem especificada (pode ser exibida com o método paint(Graphics g))
Ciclo de Vida de um Applet
init() start() stop() destroy()
• init() e destroy() são usualmente utilizados para alocação e desalocação de recursos,
respectivamente, como arquivos, memória, etc.
• start() e stop() são acionados quando um applet é exibido e ocultado no navegador, respectivamente.
Exemplo de Applet
• Neste primeiro exemplo, temos a exibição de um texto no navegadorimport java.awt.*;
import java.applet.*;
public class AppletSimples extends Applet{
public void init() {
String msg = "Olá Mundo !!!";
Label l = new Label(msg);
l.setAlignment(Label.CENTER);
setLayout(new BorderLayout());
add(l, BorderLayout.CENTER);
}
}
Exemplo de Applet (2)• Podemos modificar o primeiro exemplo alterando de forma
aleatória a cor de fundo do painel e passando a mensagem por parâmetro
import java.awt.*;
import java.applet.*;
public class AppletSimples extends Applet {
public void init() {
int c = (int)(Math.random() * 1000000);
this.setBackground(new Color(c));
Label l = new Label(this.getParameter("Texto"));
l.setAlignment(Label.CENTER);
this.setLayout(new BorderLayout());
this.add(l, BorderLayout.CENTER);
}
}
Exemplo de Applet (2)
• HTML com a mensagem passada por parâmetro
<html>
<head>
<title>HTML incluindo um applet</title>
</head>
<body>
<applet code=aulas.AppletSimples width=200 height=150>
<param name="Mensagem" value="Olá por Parâmetro!">
</applet>
</body>
</html>
Exemplo de Applet (2)Saída no Navegador
• Atualize através do navegador para ver as cores se alternando
Exemplo de Applet (3)• Neste exemplo, adicionamos um botão e fazemos a
própria applet tratar os eventos do botãopublic class AppletSimples
extends Applet
implements ActionListener {
public void init() {
Label l = new Label(this.getParameter("Mensagem"));
this.add(l);
Button bt = new Button();
bt.setLabel("Teste");
bt.addActionListener(this);
this.add(bt);
}
public void actionPerformed(ActionEvent arg0) {
Color color=new Color ((int)(Math.random()*10000000));
this.setBackground(color);
}
}
Testando um Applet
• Do Eclipse:
– Selecione o arquivo que contém o applet
– Clique com o botão direito e, no item “Run As” aparecerá a opção “Java Applet”
• Da linha de comando:
– Na instalação do JDK há um aplicativo chamado appletviewer, o qual recebe um arquivo html como parâmetro (página do applet)
• Do browser:
– Basta abrir o arquivo html que contém o applet
Testando um Applet
• Há uma cache para carga de classes applet
• Esta cache costuma dificultar a atualização de versões de uma applet em memória
• A primeira alternativa é fechar o browser
• A segunda é disparar uma console do plug-in java e realizar o esvaziamento da cache manualmente
– No Firefox, selecione menu “Tools > Error Console”
– Na caixa de texto digite “java” e tecle <Enter> ou pressione botão “Evaluate”
– Daí, basta clicar na tecla “x”
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Transformação de Aplicações Swing/Awt em Applets
• O método main é substituído pelo método init do applet
• O frame não precisa ser criado, já que o applet é exibido no navegador
• Copie o conteúdo do construtor da janela do frame para dentro do método init
• Alguns métodos deixam de ter importância quando são utilizados como applets, pois há comandos html específicos:– setTitle, setSize, setDefaultCloseOperation,
setVisible
Limitações
• Applets que são executadas remotamente têm comportamentorestringido na máquina cliente
– Algumas possibilidades: exibição de imagens, reprodução desom, capturar eventos de mouse e teclado, enviar entrada dousuário de volta para o host (máquina que hospeda o applet),etc
– Estas restrições visam garantir segurança na execução dessasaplicações
– Há um gerenciador de segurança na máquina virtual java quemonitora a execução dessas aplicações
• Compatibilidade entre browsers
– Melhorou com o surgimento dos plug-ins
Contexto dos Applets
• Ambiente onde o applet executa (usualmente onavegador ou um visualizador – appletviewer)
• Eventualmente, pode ser desejável que um appletcomande seu ambiente, por exemplo, pedindo aexibição de uma nova página
• Ou seja, é interessante que o applet se comuniquecom o navegador
• Para tal, a classe Applet possui o métodoAppletContext getAppletContext()
• A interface AppletContext possui vários métodos quepodem ser úteis a um applet
Contexto dos Applets
• Alguns métodos da interface AppletContext:
– Applet getApplet (String name): Retorna uma referência para um applet com atributo name na mesma página
– void showDocument (URL url, String target): Requisita ao browser que abra a url fornecida com o parâmetro target(por exemplo, target=“_self” abre na própria página, enquanto target=“_blank” abre numa página nova
– void showStatus(String status): Exibe a string fornecida na barra de status do browser (atenção pois pode haver concorrência com o browser!)
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Distribuição de Appletse Aplicativos Java
• Applets e Aplicativos Java podem ser distribuídos deforma concisa através de um arquivo JAR
• Um arquivo JAR é um arquivo compactado (formatozip) que possui uma estrutura especial, a qual éconsiderada pela JVM
• Um arquivo JAR é constituído minimamente de:
– uma hierarquia de pacotes que compõe aaplicação (contem os arquivos .class)
– um diretório chamado “META-INF”, o qual contémo arquivo de manifesto MANIFEST.MF
JAR – Arquivo de Manifesto
• Um arquivo de manifesto simplesmente descreverá o conteúdo do JAR
• A primeira linha normalmente contém a versão do arquivo de manifesto:
– Manifest-Version: 1.0
• Este arquivo é dividido em seções, as quais são separadas por linhas em branco; A primeira seção é a principal e define o que vale globalmente
• Quando o JAR é gerado para ser um “executável” do aplicativo, este precisa conter a classe que inicia a aplicação:
– Main-Class: br.com.siriusnet.cursojava.Navegador
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
JAR – Arquivo de Manifesto
• Outro atributo importante é o Class-Path
• Especifica urls de bibliotecas e/ou extensões que uma aplicação necessita
– Class-Path: MyUtils.jar
• Documentação: http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Distribuição de Aplicativos Java – Lacre (Seal)
• Caso nossa aplicação possua membros (campos e métodos) públicos a um pacote, a declaração de uma nova classe com mesmo nome de pacote dá acesso a esse conteúdo público
• Para evitar essa situação, podemos lacrar nosso pacote de forma que nenhuma classe possa ser adicionada a ela
• No arquivo manifesto, um pacote é lacrado com o atributo:
– Sealed: true
• No Eclipse, na geração do JAR, a caixa de diálogo “JAR Manifest Specification” contém recursos para o lacre
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
ATIVIDADE
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
BIBLIOGRAFIA
BAZILIO, Carlos. Introdução à Programação para Web. Memória de aula da
Universidade Federal Fluminense (Polo Universitário de Rio das Ostras)
BAZILIO, Carlos. HTML, CSS e Javascript. Memória de aula da Universidade
Federal Fluminense (Polo Universitário de Rio das Ostras)
ROLIM, Carlos Oberdan. Linguagem de Programação IV - Introdução. Material de
aula da universidade URI - Santo Ângelo.
CEZAR, Alan. HTML: Encode UTF-8 (Entendendo um pouco mais sobre encode e
como funciona o UTF-8). Matéria disponível no seguinte link:
https://tableless.com.br/html-encode-utf-8/
JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS
Marcelo Henrique dos Santos
http://www.marcelohsantos.com
Top Related