Loading

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

Nota de Estudos
Study Reminders
Support
Text Version

Java Server Pages & Templates

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

    +

Olá, bem-vindo à segunda sessão da semana 8. Nós já fizemos nossos próprios servlets.● Remaining partes de JSP e servlets.● Motivar a necessidade de templates● Java versão de templates, que é Java Server Pages.
Demos:● Olá mundo usando templates● Problema básico a ser resolvido em templates, como o Java Server Pages resolve isso.● Use JSP para criar um aplicativo de formulário
(Consulte O Tempo De Deslizamento: 01:29)
Deixe-nos dar uma olhada brevemente no que aprendemos da última vez.(Consulte o Tempo de Slide: 01:37)
● Layout do servidor básico.● Estrutura de diretórios dos sistemas (como mostrado em Slide 1:37)
(Consulte O Tempo De Deslizamento: 02:35)
Web.xml, no caso do aplicativo Hello:● Descrição para o servidor Tomcat o que o arranjo de servlets é como● Mapas URL: Então o que temos aqui é que criamos um servlet, que é implementado ema classe HelloServlet, cujo nome é HelloServlet e esse nome está disponível sobhelloservlet.html e “ / ”
(Consulte O Tempo De Deslizamento: 03:20)
HelloTem.java é o template java, vs HelloServletlet.java(Consulte o Tempo de Slide: 04:29)
A diferença:Em HelloServlet.java:1. Assim que obtemos as informações em HelloServlet.java, começamos a imprimi-la no mesmo estilo deigual ao do CGI.2. A linha por saída de linha (out.println linhas) clutters e domina o conteúdo do arquivo.
Isso é resolvido por HelloTem.java. Em HelloTem.java:
1. Os modelos são escritos como string (linha 33 em HelloTem.java na figura acima), em que osliterais string são escritos com “ + ” para concatená-los.Nota: Estamos escrevendo modelo String neste estilo porque Java não tem sequenciais multilinhas de cadeia. Em Python e em alguns dos outros idiomas e acho que algumas das versões mais recentesdo Java, você pode escrever uma única string que abrange várias linhas e assim seremos capazes deescrever tudo isso sem ter que adicionar pequenos literais string.
2. Esses literais de cadeia são marcantes como <html>, <head>, <title>, etc.
3. Figura acima é o html impresso em resposta, por HelloTem.java. O destacado“ helloservlet ” entre o <title> </title> e similarmente entre as markups<h1> e </h1>) é a parte de dados do arquivo html. Estes não são diretamente escritos na string“ Template ” a ser impresso.
4. Dividimos o problema de impressão em dois; uma é a marcação HTML e segunda é a parte“ data ” part. As partes onde queremos preencher os dados do “ ” dentro do HTML são identificadasdando nomes de uma maneira particular. Veja a figura acima. Entre a marcação<title> e </title>, acabamos de ter $title e similarmente para body, somosnomeando os dados a serem preenchidos entre <body> e </body> como $body. $title e$body são apenas marcadores para que os dados sejam preenchidos dentro dessas tags.
Então, como são impressos os dados reais?5. Primeiro, um mapa hash deve ser criado como mostrado na figura acima, que é este Mapa < String,String > params = novo HashMap < String, String >, um mapa hash e neste mapa, nósinserir pares de valor chave, (aqui, < título, “ hello template title ” > e < body, ” hellotemplate servlet body ” > são os dois pares chave-valor).6. Chamar generatePageByTemplate (fora, params).7. generatePageByTemplate (out, params) significa gerar uma página usando o template.Stringbuilder b na figura abaixo, usa o template e usando para o loop over keys deparam, anexa valor de chaves no template. Eg: onde quer que $title aparece emtemplate string, substitua o valor da chave “ title ” no hashmap param. Use out to printeste template “ substituído com valores no lugar de $key ” na última linha de código.
Neste exemplo, calculamos o comprimento do valor de $título. indexOf encontra o primeiro caractereonde este título do dólar aparece e então o caractere final, é claro que é o índice inicialmais o comprimento da chave e assim, do start to end, ou seja, substituímos $título pelo valor,que significa, nós substituímos $título pelo “ hello template title ”, seja ele qual for esimilarmente para body.Nota: Java string builder que é a maneira padrão de manipular strings eficientemente
Para resumir, deixamos furos no template e preenchê-lo enviando os dados para serem preenchidos como parâmetrospara gerar. Então isso é direto o suficiente e agora nós podemos executar isso como de costume.
Vamos fazer algumas coisas: Ir para o diretório hellotem
Compilar HelloTem.java;
Montar a um arquivo jar usando o comando jar:
Na vida real, as pessoas incluem estes nos scripts, mas queremos ser claros sobre o todo o trabalhoe não usar muitas ferramentas.
Implementar hellotem.war.
Abrir /hellotem em nova guia.
Saída:
Visualizar a origem deste arquivo html:
Observe que, desde o template String em HelloTem.java didn ’ t ter caractere de nova linha, vemosque o arquivo html é impresso em uma única linha na figura acima.
JSP torna o processo acima de criação de arquivo html a ser impresso usando templates muitoslicker do que o que fizemos com este pequeno modelo artesanal.
Para resumir: Em Hellotem.java, o doGet (..) possui um modelo e um hashmap e nós fustamosos dois em b e imprimimos.
Páginas Java ServletIr para nptel / hellojsp/src/nptel/HelloJSP.java. O template está em nenhum lugar para servisto nisso.
O modelo está em um novo diretório.
A figura acima mostra o novo diretório. A estrutura de diretórios para o nosso novo sistema temhellojsp.war que tem src e WEB-INF e aqui temos um novo diretório chamado hello.jsp,no qual há um arquivo chamado hello.jsp.(Consulte o tempo de slide: 13:39)
1. Essa marcação parece muito mais bem do que a marcação criada usando um modelo Java dentro do código.
2. O código aqui diz: Há <html>, <head>, <title> etc., mas, desta vez, título e corpo sãogerados por trechos do formulário: < %= Request.getAttribute (“ markup_name ”) % >.(Consulte O Tempo De Deslizamento: 14:30)
3. HelloJSP.java, como mostrado na figura acima, leva o objeto da solicitação, usando uma API padrãochamada setAttribute () configura pares de valor de chave.
4. Associado a cada objeto de solicitação, há um getRequestDispatcher e um Dispatcher de Solicitaçãobasicamente diz o que fazer com o objeto de solicitação. Aqui, o RequestDispatcherdiz: ” faça o próximo pedido de jsp/hello.jsp ”.(Consulte o Tempo de Slide: 18:00)
Para resumir: Vamos manter a estrutura acima e adicionar um diretório JSP que tem ohello.jsp. Este é um layout de servlet mais JSP.(Consulte o Slide Time: 18:36)
(Consulte O Tempo De Deslizamento: 18:38)
(Consulte O Tempo De Deslizamento: 18:40)
Transição em estilo de desenvolvimento de Programas de Servlet:1. Existem duas formas de geração de código: uma é via o estilo que usamos no HelloServlet,que é saída explícita versus a segunda via, nós fizemos isso que é com templates. Assim,HelloTem que gera saída substituindo posicionadores, mas ainda é código.2. Em vez de ter código que está gerando texto, invertemos o relacionamento; temoscódigo existente dentro do texto e é isso que isso está fazendo.
É pegar o texto como primário e colocar em pequenos bits e pedaços de código (incluído dentro detipos diferentes de sinais:%, >, < e =). Então código existe dentro do texto.
Visualizar parte do aplicativo ou seja, o que o usuário vê, agora é feito explicitamente em um arquivo de JSP de template.(Consulte o Tempo de Slide: 20:06)
Essa é claramente apenas a visão. Nada a ver com o conteúdo. Algum conteúdo estará lá; nós fazemosnão sabemos o que é e esta é a parte interessante: o que acontece é que, internamente e nós vamosver isso em um minuto JSP que é HTML intercalado com código java é realmente compilado em um servlete, portanto, ele pode cooperar com um servlet. Então, a razão pela qual podemos dizer incluir ou emalgum sentido, enviar para frente ou enviar a solicitação para o arquivo JSP e obter seu resultado e incluir que emo pedido geral. É o que está acontecendo.(Consulte o Slide Time: 20:54)
Como isso acontece é assim; vamos primeiro nos certificar de que. Vamos primeiro executá-lo e depois vamos vero que acontece.(Consulte o Slide Time: 21:11)
Compile o arquivo: “ javac HelloJsp.java ”, nós agora vamos copiar. (Consulte O Tempo De Deslizamento: 22:18)
Dê uma olhada no que o web.xml diz: HelloJsp corresponde à classe HelloJsp como de costume, masinternamente. Então externamente isso parece não muito diferente do que temos para hellotem.Mas na realidade vamos fazer uma chamada interna para o arquivo JSP. Esta diferença vai começaraparecida no web.xml após a implementação. (Consulte o Tempo de Slide: 23:35)
(Consulte O Tempo De Deslizamento: 24:13)
(Consulte O Tempo De Deslizamento: 24:57)
Visitar helloJsp. Pela primeira vez, o próprio servidor, que é Tomcat, cria hello_jsp.java. Esteé a versão traduzida.Ele converteu nosso nice template em instruções hello.jsp para out.write (..).Todo o trabalho tedioso desnecessário é feito para nós. Ele pega as cordas como elas são e interpolam elecom um template exceto, em JSP, ele é substituído na mosca e em vez de compilá-lo, na verdade nóstivemos que chamar um método de substituição que faz substituição em tempo de execução.
Nós não temos uma separação agradável entre o que você vê na visualização e o que você vê no modelo,o que é apenas este muito.
Então, essa é a ideia principal de JSPs.