Sunteți pe pagina 1din 5

Fundamentos do JSP

Introduo
Ns veremos imediatamente alguns exemplos, seguidos por uma discusso da sintaxe bsica de "tags" do JSP. Em seguida, consideraremos como configurar um "web server" para o uso em pginas JavaServer. Finalmente, ns examinaremos como a tecnologia trabalha realmente, discutindo como a execuo do JSP afeta sua operao.

Escrevendo seu primeiro JSP


Nosso primeiro objetivo neste captulo apresentar exemplos para ilustrar a flexibilidade e potncia do JSP como uma soluo para a gerao de pginas dinmicas. No focalizaremos em demasia os detalhes haver uma abundncia destes mais tarde. A inteno aqui simplesmente dar-lhe uma idia do caminho a ser tomado nos captulos seguintes.

Sobre os exemplos
Como indicado acima, o diferencial do JSP sua habilidade em gerar pginas dinmicas atravs de uma sintaxe familiar, o HTML. Ao mesmo tempo, pode ser difcil para novatos em JSP, reconhecer imediatamente onde seus elementos esto sendo usados dentro de uma pgina. Conseqentemente, nos exemplos neste tutorial, que combinam elementos do JSP com outro contedo esttico (tipicamente HTML), adotamos a conveno das "tags" do JSP em tais pginas e fragmentos, estarem em negrito. A inteno desta conveno permitir aos leitores distinguir facilmente o contedo JSP do contedo esttico, circunvizinho do original.

Ol, Mundo!
Nenhum tutorial estaria completo sem um exemplo que imprima "Ol, mundo!". Ento aqui est um JSP que faz apenas isso:
<HTML> <BODY> Ol, Mundo! </BODY> </HTML>

Neste momento, voc est pensando: "Hei! Este no nada mais que um HTML!". E voc est certo. , no obstante, uma pgina vlida do JSP. Esta pgina poderia ser adicionada a um "web server" configurado para rodar JSP, sendo interpretada normalmente se estiver com a extenso apropriada ".jsp".

Ol, Mundo! Revisado


Estabelecendo o fato que todos os originais vlidos do HTML so tambm originais vlidos do JSP, vamos ento considerar um exemplo motivador. Est aqui um arquivo que gera contedo dinmico com o uso de um par de "tags" JSP que suportam scripting:
<HTML> <BODY> <% String visitor = request.getParameter("name"); if (visitor == null) visitor = "Mundo"; %> Ol, <%= visitor %>! </BODY> </HTML>

Sem entrar em detalhes, este JSP declara uma varivel "String" do Java chamada "visitor", e tenta ento inici-lo no pedido atual do HTTP. Se nenhum valor para esta varivel estiver definido, um valor padro atribudo. Uma expresso de JSP usada ento para introduzir o valor desta varivel na sada do HTML da pgina. Os parmetros da requisio so passados para pginas JSP usando os mecanismos normais do protocolo HTTP. Para requisies "GET" do HTTP, valores de parmetro codificados so adicionados simplesmente ao URL. Para requisies "POST" do HTTP, um protocolo mais complicado usado emitir dados do parmetro atravs do cabealho da pgina. Na prtica, URLs maiores que 255 caracteres podem ser problemticas, assim os pedidos "POST" so o padro quando um grande volume de dados requerido. AVISO Esta limitao do comprimento em URLs permite compatibilidade com browsers antigos. A especificao HTTP/1.1 no impe realmente nenhum limite a priori no comprimento do URL, mas h uns servidores mais velhos, uns proxies, e uns browsers que no conseguem segurar URLs que excedem este limite 255 caracteres. Para as finalidades deste exemplo, vamos supor que o URL para esta pgina JSP http://server/webdev/fundamentals/helloScript.jsp. Se um "web browser" for usado para solicitar este URL atravs de um "GET" do HTTP, o recipiente JSP que processar esta pgina, responder com o seguinte:
Ol, Mundo!

Se o valor de parmetro apropriado fosse adicionado a este URL, entretanto, um resultado diferente seria obtido. Se o URL solicitado for http://servcr/wcbdcv/fundamentals/helloScript.jsp?name=Renato, por exemplo, a resposta do recipiente JSP seria:
Ol, Renato!

No primeiro caso, sem o valor do parmetro (name), o script usou o valor padro para a varivel do visitante da pgina. No segundo caso, o certificado recuperou o valor do parmetro conhecido do pedido, e assim que pde gerar um contedo dinmico mais personalizado.

Se voc estiver utilizando um "web browser" para exibir estes exemplos, voc pode neste momento usar o comando "Visualizar cdigo-fonte" do browser para olhar o HTML desta resposta. Dessa forma, voc poderia ver o contedo original do JSP, mas ao invs disso, voc ver algo como o seguinte:
<HTML> <BODY> Ol, Renato! </BODY> </HTML>

Se voc for novo na gerao de pginas dinmicas, voc pode querer saber o que aconteceu com todas as "tags" JSP (por exemplo, < % = visitante % >). Este resultado parece como algum deslizado no arquivo da seo anterior, introduzindo o nome "Renato" no lugar de algum do texto original. No fato, isso muito perto de o que est acontecendo realmente. Mantenha em mente que o "web browser" v somente a resposta do "web server" a seu pedido, que pode ou no corresponder a algum cdigo dinmico. O browser no tem nenhuma maneira de saber que, quando o "web server" recebe um pedido que corresponde a uma pgina JSP, esse pedido enviado ao recipiente JSP para processar. o recipiente JSP que l e interpreta o cdigo do arquivo correspondente para gerar o contedo dinmico, introduzindo os resultados no contedo esttico j na pgina, e retornando a pgina terminada ao servidor HTTP. Esta ento a pgina que emitida para o browser, com nenhuma evidncia qualquer da atividade do que ocorreu atrs das cenas. Tudo que o browser v apenas uma pgina HTML. este HTML de resposta que apresentado pelo browser quando voc utiliza o comando "Visualizar cdigo-fonte".

Ol, Mundo! Edio Bean


Alm de suportar scripting, o JSP inclui "tags" para interagir com Java-Beans. Para dar a este assunto de "Ol, Mundo!" a ateno merecida, forneceremos tambm um terceiro exemplo JSP que demonstra esta aproximao. Antes mesmo de apresentar um JSP utilizando "tags" JavaBeans, necessitamos primeiramente de um Bean para acessar. Est aqui o cdigo de fonte para um Bean chamado HelloBean (OlBean), que tem uma propriedade, chamada name (nome):
package myBeans; public class HelloBean implements java.io.Serializable { String name; public HelloBean () { this.name = "World"; } public String getName () { return name; } public void setName (String name) { this.name = name; } }

Se voc for um programador de Java, voc pode ver neste cdigo que os JavaBeans so executados atravs das classes ordinrias do Java, que aderem a um conjunto de convenes para instanciar objetos, e para alcanar e ajustar suas propriedades.

Por ora, note que a classe de HelloBean tem um construtor que no recebe nenhum argumento, entretanto, atribui um valor padro propriedade name (nome). Esta propriedade, cujo o valor uma instncia da classe "String" do Java, alcanada atravs de um mtodo chamado getName(). Que modificado atravs de um mtodo chamado setName(), que faz exame de um nico argumento do mesmo tipo que a prpria propriedade (isto , "String"). Dada esta definio da classe HelloBean, pode ento ser usada em um arquivo JSP como segue:
<HTML> <BODY> <jsp:useBean id="hello" class="myBeans.HelloBean"/> <jsp:setProperty name="hello" property="name" param="name"/> Ol, <jsp:getProperty name="hello" property="name"/>! </BODY> </HTML>

A primeira "tag" JSP a aparecer nesta pgina a <jsp:useBean>. Como o seu prprio nome sugere, usada para indicar que um Bean de uma classe particular estar sendo usado nesta pgina. Aqui, a classe de HelloBean especificada. Alm, um identificador, hello, especificado como um identificador para instanciar o Bean. Este identificador pode ser usado para consultar o Bean mais tarde no cdigo do JSP. A "tag" <jsp:setProperty> aparece em seguida. No formulrio mostrado aqui, esta "tag" usada para modificar a propriedade name do Bean hello baseada no valor do parmetro name. De fato, esta Tag diz que o pedido deve ser procurado pelo parmetro name e, se se for encontrado, este valor deve ser copiado do pedido (request) propriedade name do Bean. A "tag" final do JSP em questo, <jsp:getProperty>, obtm o valor de uma propriedade do Bean e o apresenta na pgina no lugar da "tag" original. Neste caso, a "tag" recupera a propriedade name do Bean chamado HelloBean, associado ao identificador hello. Suponha, ento, que o URL para esta pgina JSP http://server/webdev/fundamentals/helloBean.jsp. Se esta pgina for acessada atravs de um "GET" do HTTP, como antes teremos:
Ol, Mundo!

Isto porque o valor padro da propriedade nome o seguinte valor do tipo String: "Mundo". Nenhum parmetro foi fornecido para que a "tag" <jsp:setProperty> pudesse ajustar o valor da propriedade, assim o valor padro - ajustado pelo construtor que foi chamado em conseqncia da "tag" <jsp:useBean> - foi usado. Suponha, embora, que o URL http://server/webdev/fundamentals/hello-Bean.jsp?name=Alan fosse usado para acessar esta pgina. Neste caso, a "tag" <jsp:setProperty> encontraria um parmetro com o mesmo nome que uma das propriedades do Bean (isto , name). O valor de parmetro usado ento para ajustar o valor da propriedade correspondente, tal que a resposta a este pedido seria:
Ol, Alan!

Neste caso, utilizamos dois arquivos para criar este contedo, o arquivo do cdigofonte Java que definiu a classe Bean e o arquivo JSP que criou, modificou, e acessou o Bean a fim produzir esse ndice. No exemplo anterior, todo o cdigo foi includo no nico arquivo JSP.

evidente entre estes dois exemplos, que a utilizao de Beans promove a reutilizao do cdigo (vrios JSPs poderiam fazer uso da classe de HelloBean sem a necessidade de rescrever todo o cdigo adicional em Java) e tambm separa a apresentao da execuo , ou seja, um arquivo contm somente o HTML e "tags" XML-based, o outro arquivo contem somente Java.

/-----/ Tutorial retirado da Serial Link Millenium 3000 / www.seriallink.com / Traduo do livro: Web Development With JavaServerPages /------

S-ar putea să vă placă și