Loading

Module 1: Desenvolvimento de Aplicações Web com Servlets & JSP

Nota de Estudos
Study Reminders
Support
Text Version

Como alterar o App do CGI para o App GUI

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Bem-vindo à sessão 1, parte 2 de Introdução ao Desenvolvimento de Aplicados Moderno. Nós temosagora começamos a mudar nosso aplicativo de wrapper CGI em um app GUI, e como parte disso vimos no últimotempo que estudamos:.1. Como a arquitetura mudou nos três sistemas; CLI, Cgi-bin, Servlets.2. Os internautas do servlet3. As demos que Tomcat ’ s built-in servlets nos dão.(Consulte o Slide Time: 00:56)
Agora, damos uma olhada na próxima etapa de como fazer um app GUI para fora do nosso app CGI. Nosso appGUI tem um botão de registro que age um pouco como login e ele então exibe o nomedo usuário atual e ele fornece identidade e contexto para outros comandos e possibilitaações adicionais.(Consulte o Tempo do slide: 01:47)
Essa noção de um único aplicativo, que mostra a você uma interface de usuário e você trabalha em suaidentidade atual, é exatamente como fazemos login em nossos sistemas. Por isso, em uma base de aplicação,pode-se ter uma ideia semelhante, que é conhecida como sessões. Assim, nosso exemplo de brinquedo foi que se o usuárioatual for conhecido, então, reportar pode usar essa informação diretamente para craft a saída de uma forma legível dee que está implícita quanto a quem está usando o aplicativo.(Consulte o Tempo do slide: 02:37)
Essa natureza de apps GUI, é o que pretendemos replicar desta vez. A dificuldade com isso, éprotocolo HTTP é stateless. HTTP é o protocolo que conecta o navegador ao servidor. Parademonstrar o que significa stateless, faça o seguinte:1. Iniciar o sistema apache(Consulte o Tempo de Slide: 03:06)
NOTA: Às vezes você mesmo tem que fazer ciclos de start-stop se o apache falhar ao iniciar na primeira tentativa. Geralmente a causa é que o sistema Apache não se fechou adequadamente. Isso é muitocomum mesmo em sistemas de servidores reais. Usualmente, o problema para não encerrar corretamente é o ID do processodo servidor não foi limpo durante o encerrado. Geralmente queremos que apenas um servidorinicie. Assim, durante a inicialização da próxima vez, um servidor já está em alta como é registrado em um arquivo PIDem xampp / logs há HTTPD.(Consulte o Tempo de Slide: 04:39)
O ID do processo do processo principal do Apache é armazenado aqui em um arquivo (neste caso, pid é8232). O trabalho real é feito em grande parte pelo segundo processo (aqui, 18272) enquanto o processo principalatua como um supervisor.
(Consulte O Tempo De Deslizamento: 05:26)
2. Abrir Aplicativo de fairshare. Na caixa de texto, escreva: Registre f1 e encerre, Envie o formulário.Ferramentas de desenvolvedor web Open e ferramentas de comutação do seu navegador. Selecione a solicitação POST na ferramenta. Observe o conteúdo da solicitação de post. Toda peça de informação que estamos enviandoem todo o servidor é algo que o servidor pode ver diretamente ou obter diretamente a partir da página do únicocom a qual estamos trabalhando.
(Consulte O Tempo De Deslizamento: 06:01)
(Consulte O Tempo De Deslizamento: 06:46)
3. No entanto, considere o nosso sistema GUI onde mediante a imprensa do botão de registro,outra tela deve aparecer, como na figura acima e assim por diante. Esta nova telalembra de qualquer informação fornecida em todas as páginas anteriores!
Neste momento, usando servlets, cada dado que foi para o servidor são os dados ONLY que sãodisponíveis na página anterior!!
Então, então não há como lembrar a coisa em que estamos trabalhando.
os apps GUI, por outro lado, possuem sequências de páginas que atingem um objetivo juntos: para oexemplo, no screenshot of GUI app acima, está implícito quem está usando o aplicativo mesmoquando o usuário veio da tela anterior. Essa ideia de lembrar algumas informaçõesatravés de sessões é necessária.
É, portanto, uma necessidade de criar a noção de sessão em servlets para que possamos lembrarinformações sobre várias telas. Isso é conseguido usando cookies, que é uma conhecida palavrapara todos nós que utilizamos a web e um tipo específico de cookie é conhecido como uma sessão.(Consulte o Tempo de Slide: 08:58)
Então, para se ter uma ideia do que são essas coisas, olharemos para Tomcat.1. Iniciar Tomcat.
NOTA: Às vezes “ mudança de status detectada ” pode ser relatada enquanto inicia o Tomcat. (ConsulteSlide Time: 09:28). A janela acima pode aparecer. Quando você inicia o Tomcat, as informaçõessobre o início são fornecidas em janelas como esta. (A figura acima diz que parecepara algum tipo de JRE, JDK etc. Ele encontra um e quando encontra um, ele começa a executar e édando-nos alguma informação). É uma boa prática consultar esses tipos de displays para avisos. Aqui, por exemplo, o aviso é criação de uma instância aleatória segura levou xxx
milissegundos, o que provavelmente provavelmente foi relatado como o sistema espera que ele inicie em umtempo mais curto.
2. Em seu navegador, digite a URL: http://localhost: 8080. Login no app do gerente. Digite o nome de usuário e senhaconfigurados na última palestra. (Esta informação está disponível emxampp/Tomcat/conf/tomcat-users.xml).
Já que HTTP é stateless, se há uma sequência de páginas e cada vez que você vai de uma páginapara outra com base apenas nas informações presentes na página antes, então não há uma maneira simplesde gerar algum tipo de informação, que persista em toda aquela série de páginas,mas quando temos um aplicativo, talvez precisemos lembrar de peças como esta.
3. Vá para exemplos de servlet. Vá a exemplo de cookies e deixe-nos ver o que este exemplo parecequando executamos um pedido. A solicitação GET elaborada em ferramentas de desenvolvedor web retrata comotodas as informações vieram diretamente da página antes e desta vez, não há nenhum corpo de solicitaçãoou qualquer coisa.(Consulte o Tempo de Slide: 13:43)
4. Execute o app, crie um cookie chamado c1 cujo valor é thisismyfirstcookie. A resposta este tempotem um cabeçalho chamado Set-Cookie. É aqui que o servidor diz ao navegador para configurar o cookieacima.
NOTA: Convencionalmente, os cookies normalmente serão configurados automaticamente pelo servidor, no entantoo cabeçalho Set-Cookie existe nesta versão também.
Entender as informações do cookieO cabeçalho da resposta bruta tem as seguintes informações Set-Cookie:
Set-Cookie: c1 = thisismyfirstcookie; Path = /examples/
O Caminho diz que, fora das partes da URL, o cookie c1 se aplica a qualquer coisa que tenhaexemplos nele.Para entender o que significa a instrução acima:1. Configure um cookie (nós já fizemos, ou seja, c1) em cookies exemplo.2. Inicie um watcher neste ponto. (nós já fizemos, ou seja, ferramenta Toggle)3. Executar exemplos de servlet (Na hierarquia, temos servlets, que está sobexemplos)
Desta vez, o navegador está enviando um novo cabeçalho, que contém o cookie (c1) que foiset!!
Então, a partir de agora, todas as interações com este navegador que acontece sob exemplos irãoobter automaticamente este cookie na solicitação.
Takeaway:Browser efetivamente diz para o servidor que; “ Eu interagi com você uma vez, você me envioualgo que diz Set-Cookie. Lembrei-me desta informação para pedidos futuros. Eu souanexando o cookie sempre que a URL a ser carregada em exemplos. ”
Onde estão as informações sobre cookies armazenados pelo navegador?Para ver onde o cookie ficou configurado,1. Vá para “ Options ” no navegador.
2. Vá para o “ Privacy and Security ”-> “ gerenciar dados ”.3. Você verá os cookies que são configurados por localhost.
Podemos remover cookies que foram configurados limpando-os aqui.
Podem vários cookies ser configurados para o mesmo caminho?Configure outro cookie c2, com valor secondcookie e envie a consulta em cookies exemplo(similarmente digite cookie c3 com o valor thirdcookie).
Ao enviar a consulta, vemos que o cabeçalho da solicitação tem informações sobre c2 enquantoo cabeçalho de resposta tem c3. Isso porque o navegador tem informações c2 e está dando parao servidor, enquanto o c3 foi solicitado para ser configurado como navegador (por servidor) e, portanto, parte do cabeçalho de resposta.
Então, deixe-nos fazer um quarto cookie e por isso agora o navegador está enviando dois cookies (c2,c3), evoltar ainda mais um (c4).
Agora, apenas nos submetemos nada (ou seja, clique em “ Enviar ” com caixas de texto vazias). O aplicativofica confuso, retorna o “ nome pode ser nulo ou 0 length ”, dando-nos oIllegalArgumentException, mas os cookies antigos que já tínhamos configurado estão devidamente ficandoenviados como de costume.
Então, é assim que um navegador consegue enviar tanta informação. Quando você estáexperimentando coisas como cookies, uma coisa útil que você pode tentar é criar uma janelaprivada. Pois em janelas privadas, você não armazela as informações que vão com elase se observarmos algo básico como o site do Google, o que você verá é antes de tudo, é claro,que ele faz um número muito grande de pedidos que você não esperaria necessariamente, e essascoisas geralmente conterão algum cookie ou o outro. A partir dos nomes dos cookies,às vezes você pode descobrir o que está acontecendo. Esses cookies em pedidos são usados por empresas web.
Cookies: Boon ou Ban?Amazon e outras empresas usam cookies para entender sua atividade, para fornecer melhores sugestões. Mas essas informações podem ser mal utilizadas. Acompanhar sua atividade, dizer ao longo de um diaou ao longo de um mês pode não ser tão seguro, o que é uma razão pela qual, de vez em quando, o tempo de, seus cookies precisam ser limpos. Um pode obter extensões, que fazem a limpeza de cookie paravocê, em parte do seu navegador, para que você não seja tabelado por anos juntos e alguns deesses cookies vão ficar assim e se refrescarão e assim em muito mais vezes do que você podeimaginar.
SESSÕESA próxima coisa interessante que a gente tem que ver é a ideia chamada sessão. (Consulte o Tempo do slide:26:48)
1. Executar exemplo de Sessão.2. O cabeçalho acima diz, no momento em que executamos este exemplo, um id exclusivo égerado.3. Para ver onde este id está: esta informação id information realmente i s obtido a partir de um cookie, que é configurado pelo servidor. Então, o que este cookie está dizendo ao nosso navegador é que eledeve configurar um cookie cujo nome é JSESSIONID e o valor é este particular
id exclusivo. O caminho é o “ exemplos ” e é um cookie http apenas, portanto, não será enviado paraum site https, se ele estiver lá. Então, em última análise uma sessão é apenas um cookie.
Qual é a distinção entre cookies e sessões?] Enquanto os cookies que são usados para fins como o rastreamento, que fica por perto e o ajuda asaber que é a mesma pessoa enquanto que uma sessão pode ser temporária, por exemplo, os bancosmuitas vezes o registrarão como dizem depois que um determinado tempo decorreu para segurança ’ ssaquê. Então, as coisas que determinam quanto tempo você está logado e se você está logadofora é o que é o trabalho de uma sessão, mas uma sessão é apenas um tipo específico de cookie, ele meramentegerenciado de forma diferente de outros cookies, que podem ser por exemplo, cookies de login, quediz que esta pessoa logou.
Então, vamos ver o que acontece, então temos atributo um, e valor é v1, e se nos submetemos a esse tal, então o que vemos é, primeiro de tudo o id de sessão é colocado aqui também, mas além disso, eletambém está sendo enviado.
Além disso, os cookies anteriores c1, c2 e c3 são diferentes e o id de sessão é apenas essascoisas, além disso precisamos de informações sobre onde este dado particular está sendo mantido e que ele podeescolher manter. Armazene essa informação de uma maneira que veremos quando olhamos para o código deque aplicativo. Então, aqui estamos no que diz respeito a isso, aqui o método de solicitação foiPOST. Se você olhar para o que estava sendo enviado, você enviou esses dois caras, por isso nome de dados e dadosvalor e esses são basicamente os nomes do formulário.(Consulte o Tempo do slide: 30: 12)
Apenas para confirmar isso, podemos olhar para ele assim, e você verá nome de dados e valor de dados emambos os formulários. Isto é o que enviamos. Que foi enviado para o servidor como parte da solicitação eentão, como parte da resposta ele enviou de volta esses cabeçalhos e esta informação ela assou na própria página. Então, por exemplo, essa string foi gerada pelo servidor e dessa vez, sessãodados, é algo que não é lembrado pelo navegador, mas ele é lembrado pelo servidor.
Há um cookie. Cookie é para um mecanismo de propósito geral para armazenar dados através de páginas. Um tipo de cookie particular é chamado de id de sessão e você pode armazenar dados em uma sessão, o quesignifica que o servidor tentará lembrar alguns dados para o navegador em que ele pode colocá-lo em um arquivoou ele pode armazená-lo em um banco de dados, ou ele pode armazená-lo em qualquer outro container persistente e que dadosserão acessíveis quando você der a ele esta chave de sessão específica.
Então, dados de sessão atuam como um par de valor chave no lado do servidor e os cookies atuam como pares de valor de chaveno lado do cliente e o cliente faz o trabalho de lembrar os cookies do lado do cliente enquantoo servidor fará o trabalho de lembrar as informações do lado do servidor. Para todos os navegadores, os cookiessão um mecanismo padrão, enquanto que uma sessão, tecnicamente falando, não é nada que sejaespecificado por qualquer coisa no padrão http.
É algo decente o suficiente prática que foi inventada por pessoas que queriam programaraplicativos com sessões. Vamos dar uma olhada em um exemplo diferente disso. Visite o site “
Lambda o ultimate ”. É um site de discussão de linguagem de programação. Inicie um watcher aqui,e aqui se você olhar, há um cookie que fica configurado chamado de id de sessão do PHP.(Consulte o Tempo de Slide: 32:41)
programas PHP que são escritos para criar este site e eles geram esses tipos de cookies de id de sessão. O cabeçalho é cookie, o nome do cookie é session id, e este sistema irálembrar algo sobre nossa sessão no lado do servidor. Então, essa é a estrutura geral.(Consulte o Slide Time: 33:28)
Então, o que aprendemos é que um cookie também é um cabeçalho. É o servidor que informa ao navegador configurarum cookie, e o navegador lembra-se de enviar o cookie para o servidor se o caminho do cookiefor uma parte da URL da página.
Um uso particular de cookies é chamado de sessão e sessões são interações de curta duração comocom um banco, que o fará o logout depois de algum tempo.(Consulte o Tempo do slide: 35:47)
Então, esse é o nosso resumo de cookies e sessões. Agora, deixe-nos dar uma olhada no código para essascoisas.
Vá para exemplos de servlet e aqui temos o código para exemplo de cookies.1. O núcleo parte do código é como mostrado no Tomcat.2. Já vimos o doGet e o recebimento dos objetos do servlet.3. Ele obtém acesso ao corpo do sistema como um objeto PrintWriter e a partir do objetoPrintWriter, ele pode obter uma matriz usando a chamada function, chamada request.getCookiese ela as imprime. Mais tarde se você pedir para configurar um cookie, ele ganha um ao dizerrequest.getParameter (nome) e uma vez que ele obtenha esse nome de parâmetro, ele obterá o segundo parâmetro, que é o valor do cookie, assim você consegue configurar o cookie.
Deixe-nos apenas olhar para o que o código estava falando.
Então, aqui temos o nosso cookie e se você olhar a fonte da página, temos nome de cookie eparâmetros de valor de cookie, que são campos de formulário e neste código, este valor de cookie e cookienome é exatamente o que estamos recebendo, mas desta vez se você quiser configurar um cookie novo, você liga
esta função, response.addCookie, que realmente cria aquele cabeçalho que vimos chamado Set-Cookie.
Como esse Set-Cookie vem sobre?Ela surgiu por meio de addCookie. Usamos esses cabeçalhos para configurar um cookie, quando solicitadopelo servidor, e o navegador se lembrará de todos os cookies que foram configurados até agora para este caminho particular, em que path está “ exemplos ”. Por isso, todas as páginas sob exemplos, que incluitodos os servlets, que todos recebem para ver todos esses cookies.
De forma semelhante, vejamos o que o código-fonte para sessões olha. Semelhantes aos cookies, obtemos informações degetSession. A cada sessão, há um objeto de sessão que é criado no lado do servidor, que contém essas informações como HttpSession etc. Ele só vai permanecerna memória e quando você cria um, ele automaticamente ganha campos como: id, criado, últimoacessado etc.
Para completar esta discussão, além do código simplificado, vamos dar uma olhada no código real.Então, em um código real, a diferença é que enquanto o código ingênuo foca puramente na configuração dea sessão, este código também tem todas as informações necessárias para gerar esta página ou seja, a sessão atualetc. está contida neste guia e o trabalho real de obtenção dos dados da sessão éfeito neste.
Então, getAttributenames () e hasMoreElements () etc. é onde as informações estão ficandoarmazenadas. Dada uma sessão, também é possível fazê-lo persistir passado um servidor removido, armazenandoele em um arquivo ou um banco de dados etc. e grande parte deste maquinário é realmente padrão em Tomcat.
Agora que vimos a única ideia de núcleo importante que são os cookies e como uma forma específicade tratar as sessões de rendimentos de cookies, temos agora maquinários para tentar implementar esta memória multipáginaem nosso aplicativo, o que resta é entender como obter os formuláriospara trabalhar especialmente com os múltiplos botões e com isso teremos transitadosno mundo dos servlets e GUI como aplicativos.