Whats new? | Login | Parceiros
Cadastre-se | Atendimento | RSS
+ Java:
artigos   |   vídeos   |    cursos   |    mais

Trabalhando com Session no DWR - Parte 1.2

Vamos ver neste artigo alguns exemplos de como se trabalhar com o Objeto Session e Request do JAVA com o DWR.

HANDERSON BRITO FROTA
Handerson Brito Frota (handersonbf@gmail.com), cursando 8º semestre do curso de Bacharel em Ciências da Computação pela Faculdade Lourenço Filho, trabalha com desenvolvimento de sites e sistemas web desde 1998 e com Java desde 2001. Já atuando como A...


Ver space do autor


Estatísticas:
Visualizações:
12050
Favoritado:
 3 vez(es)
Conteúdo:
Didática:
Utilidade:
3 1
votos: 5

Serviços:



Trabalhando com Session no DWR - Parte 1.2

 

Vamos ver neste artigo alguns exemplos de como se trabalhar com o Objeto Session e Request do JAVA com o DWR. O Artigo será dividido em duas partes, a primeira vamos falar do Objeto Session, alguns exemplo básicos, a segunda iremos tratar de algumas implementações mais elegantes e recomendadas para o uso do DWR com Session.

\

PS1: Vamos utilizar nomes de funções, métodos, parâmetros e variáveis em inglês, pois esse artigo será também utilizado para a vídeo aula da Java Magazine e para a mesma, esse padrão em inglês tem que ser seguido.

 

Preparando o ambiente e ferramentas

Segue abaixo o nosso ambiente:

 

IDE: MyEclipse 5.1.1GA

ContainerWeb: Tomcat 5.5.17

DWR: Versão 2.0.1

JAVA: JKD5.0 ou superior.

 

Informações Iniciais

Antes de tudo vamos ver alguns conceitos básicos para começar a executar os exemplos.

 

Configuração do dwr.xml

Para se trabalhar com o DWR utilizando o objeto Session teremos que definir a sua classe FacadeAjax com o scope igual a session, veja abaixo:

 

<create creator="new" javascript="FacadeAjaxSession" scope="session">

      <param name="class" value="com.jm.dwr.FacadeAjaxSession"/>

</create>

 

Essa é a única diferença no projeto para se trabalhar com Session. O resto das configurações segue o padrão, caso você tenha alguma dúvida acesse a página do meu site onde possuo uma lista de todos os artigos do DWR.

 

http://www.handersonfrota.com.br/?page_id=12

 

Imports que serão utilizados nas páginas JSP.

 

<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/interface/FacadeAjaxSession.js'></script>

<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/engine.js'></script>

<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/util.js'></script>

<script type='text/javascript' src='js/ajax.js'></script>

<script type='text/javascript' src='js/util.js'></script>

<script type='text/javascript' src='js/session.js'></script>

 

Iniciando os Exemplos

 

Exemplo 1. Exemplo básico para recuperar um objeto na sessão.

Para este exemplo bem simples vamos setar no próprio JSP alguns valores na sessão e com o DWR recuperar esse valor em outro JSP.

 

HTML(session.jsp)

<%

     session.setAttribute("valueSession1", "Handerson Frota");

     session.setAttribute("valueSession2", "Java Magazine");

%>

<div id="msgSession"></div>

<br>

<br><strong><a href="session2.jsp">Go JSP Session 2 >>></a></strong>

<br><br>

Values Session Default:<br>

<strong><%=session.getAttribute("valueSession1") %></strong><br>

<strong><%=session.getAttribute("valueSession2") %></strong><br>

Listagem 01 – Neste exemplo criamos dois atributos na sessão: “valueSession1” e “valueSession2”, e já exibimos esses valores recuperando com session.getAttribute e criamos um link que irá acessar a página session2.jsp.

 

HTML(session2.jsp)

<br>

<br><strong><a href="session.jsp"> <<< Go JSP Session 1</a></strong>

<br><br>

Values Session Default:<br>

<strong><%=session.getAttribute("valueSession1") %></strong><br>

<strong><%=session.getAttribute("valueSession2") %></strong><br>

<br>

<hr>

<a href="javascript:getExampleSession('valueSession1');">Get Session Value 1</a><br>

<a href="javascript:getExampleSession('valueSession2');">Get Session Value 2</a><br>

<div id="msgSession"></div>

 

Listagem 02 – Neste trecho de JSP vamos ter um link que irá retornar para a página session.jsp. Vamos exibir também os valores apenas para efeito didático. Temos agora o exemplo que queremos, com a função “getExampleSession”(ver listagem 3) passamos o atributo que desejamos pegar o valor, após clicar nos links respectivos vamos exibir o retorno na div msgSession.

 

Javascript(session.js)

function getExampleSession(value){

     

      var attribute = value;

     

      FacadeAjaxSession.exampleSession1(attribute,{

            callback:function(str){

                  DWRUtil.setValue("msgSession", str);

            },

            errorHandler:function(errorString, e){

                  DWRUtil.setValue("msgSession", errorString);

            },

            timeout:50000

      });

}

Listagem 03 – Nesta função vamos receber como parâmetro o valor que será referente ao atributo que está na sessão. Ela será a responsável por imprimir o retorno do método “exampleSession1” do java.

 

Até agora é o básico, temos um JSP que seta valores no objeto Session e um JavaScript que vai acessar um método na classe Java, é nesse método que vamos utilizar a “integração” do DWR com o objeto Session do JAVA. Veremos o código a seguir e vamos comentá-lo.

 

JAVA(SessionFacade)

 

public String exampleSession1(String attribute){

    WebContext wc = WebContextFactory.get();

            

     String valueSession = "";

            

     if(wc.getHttpServletRequest().getSession().getAttribute(attribute)!= null){

 

valueSession = wc.getHttpServletRequest().getSession().getAttribute(attribute).toString();

 

     }else{

        valueSession = "Session is null";

     }

                   

     return valueSession;

}

Listagem 04 – Neste método vamos utilizar as classes WebContext e WebContextFactory ambas dos respectivos pacotes: org.directwebremoting.WebContext e org.directwebremoting.WebContextFactory do DWR. Elas são as responsáveis por acessar o objeto Session do contêiner web. Neste exemplo temos uma simples validação se o atributo existe na sessão e depois recuperamos o atributo e armazenamos em uma String, dando-a como retorno. Com esse retorno a função getExampleSession(ver listagem 03) por meio do DWRUTil.setValue() imprime o valor na página(ver listagem 02) utilizando o div “msgSession”.

 

Resultado da execução do Exemplo 1:

 

hftsdwrp12fig01.jpg 

Figura 01 – Primeira página exibindo os valores que estão na sessão: Handerson Frota e Java Magazine setados no JSP session.jsp(ver listagem 01).

 

hftsdwrp12fig02.jpg 

Figura 02 – JSP session2.jsp com o os links para executar o código da listagem 03 que recupera o valor do atributo valueSession1.

 

hftsdwrp12fig03.jpg 

Figura 03 – JSP session2.jsp com o os links para executar o código da listagem 03 que recupera o valor do atributo valueSession2.

 

Exemplo 2. Criando Atributos na sessão e recuperando-os.

Nesse exemplo vamos criar um atributo e adicionar um valor, iremos depois para o JSP session2.jsp para recuperar esse valor.

 

HTML(session.jsp)

Create Session:<br>

<form name="formCreateSession" id="formCreateSession">

    <label>Attribute:</label>

    <input type="text" id="attribute" name="attribute" value="" /><br>

    <label>Value:</label>

    <input type="text" id="value" name="value" value="" /><br>

    <input type="button" value="Save" onclick="javascript:createSession();">

</form>

Listagem 05 – Um formulário com os campos attribute e value que serão utilizados para criar a sessão.

 

HTML(session2.jsp)

<form id="form1" name="form1">

    <input type="text" value="" id="attribute"/>

</form>

<a href="javascript:getExampleSession(document.getElementById('attribute').value);">

Get Create Session Value</a><br>

Listagem 06 – Um formulário para ser digitado o nome do atributo que se deseja recuperar e o link para executar a função que recuperar o valor, getExampleSession(ver listagem 03)

 

Javascript

function createSession(){

      var bean = DWRUtil.getValues("formCreateSession");

 

      FacadeAjaxSession.createSession(bean.attribute,bean.value,{

            callback:function(){

                  DWRUtil.setValue("msgSession", "Session create !");

            },

            errorHandler:function(errorString, e){

                  DWRUtil.setValue("msgSession", errorString);

            },

            timeout:50000

      });

}

Listagem 07 – Função utilizada para criar o atributo na sessão através do método createSession(ver listagem 08)  e exibe uma mensagem de Sucesso ou Error.

 

JAVA(FacadeAjaxSession)

 

public void createSession(String attribute, String value){

    WebContext wc = WebContextFactory.get();

     wc.getHttpServletRequest().getSession().setAttribute(attribute, value);

}

Listagem 08 – Método que cria um atributo na sessão utilizando o WebContext do DWR.

 

Resultado da execução do Exemplo 2:

 

hftsdwrp12fig04.jpg 

Figura 04 – Formulário para adicionar o nome do atributo e o valor do mesmo.(session.jsp)

 

hftsdwrp12fig05.jpg 

Figura 05 – Adicionando o nome do atributo sendo “JOB” e o valor sendo “Development”. (session.jsp)

 

hftsdwrp12fig06.jpg 

Figura 06 – Adicionando o nome do atributo que se deseja recuperar o valor. (session2.jsp)

 

hftsdwrp12fig07.jpg 

Figura 07 – Exibindo o valor do atributo “JOB”. (session2.jsp)

 

 

Conclusão

Bem a primeira parte do nosso artigo esta chegando ao fim, vimos nesse artigo alguns exemplos básicos de como criar e recuperar valores da sessão utilizando o DWR. Vocês devem ter observado que não existe nenhum mistério ou mágica é bastante simples se trabalhar com session com o DWR.

 

Na segunda parte sobre sessão, veremos uma implementação mais elegante, e algumas mais recomendadas para se trabalhar com Session no DWR.

 

Espero que este artigo tenha ajudado ao entendimento e caso tenham a vir alguma dúvida entrem em contato.

 

A primeira parte desse projeto poderá ser baixada no link abaixo.

 

Baixar projeto aqui.

 

Obrigado e Boa Sorte.

 

Handerson Frota

handersonbf@gmail.com

www.handersonfrota.com.br





Participe! Inclua um comentário
[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Henrique S.
19/9/2007 16:58
Muito bom! Ótimo artigo! Mais um recurso interessante do DWR apresentado de forma bem simples! :D Estou aguardando ancioso o conteúdo da próxima parte... ehehe Parabéns!

[responder]

 



 


[Fechar]
Este post está disponível para assinantes da Java Magazine, WebMobile ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
DevMedia Group   www.devmedia.com.br   |   www.javafree.org   |   www.mrbool.com
2010 - Todos os Direitos Reservados a DevMedia Group - (21) 3382-5038