martes, 16 de noviembre de 2010

CHAT

Realizar un chat con Spring MVC, utilizando los scopes de spring-web: session, request, page, singleton,


ScopeDescription

singletons


(Default) Un objeto por contenedor

prototype


un objeto por cada inyección de dependencia

request


Un objeto por cada peticion HTTP request. Solo en contexto web de spring.

session


Un objeto por http sesion. Solo en contexto web de spring

global session


Objeto por global HTTP. Solo en contextos portlet



pasos a seguir para la configuración para acceder a beans de session y request desde un @Controlller

1. incluir en el pom.xml la dependencia de cglib-2

<dependency>
<groupId>cglib<groupId>
<artifactId>cglib<artifactId>
<version>2.2<version>
</dependency>

incluir la directiva de espacio de nombres aop en el applicationContext.xml (Intercambiar lo que teniamos)

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

incluir etiqueta aop:scoped-proxy en el bean a inyectar en el controlador

<bean id="usuarioChat" class="es.cea.UsuarioChat" scope="session">
<aop:scoped-proxy />
<property name="listaMensajes" ref="listaMensajes"></property>
</bean>

<bean id="mensajeUsuarioChat" class="es.cea.MensajeUsuarioChat" scope="request">
<property name="listaMensajes" ref="listaMensajes"></property>
<property name="usuarioChat" ref="usuarioChat"></property>
<aop:scoped-proxy />
</bean>


por ultimo para recibir parametros del formulario normal

public ModelAndView chatEnvioMensaje(
@RequestParam(value = "mensaje") String mensaje) {
return ....
}



UNA VEZ CONFIGURADO EL PROYECTO que vamos a hacer?






COMO LO VAMOS A HACER:

  • applicationContext.xml
Los objetos de menos vida (request) se inyectan en los de más vida (singleton).


  • Clases Java y JSPs



  • ListaMensajes.java
La lista de mensajes es compartida por todos los usuarios



  • MensajeChat.java


  • MensajeUsuarioChat.java
Mensaje que Spring mantiene vivo en un determinado evento (request)


  • UsuarioChat.java
El usuario debe permanecer vivo durante toda la sesion.



  • chat.jsp



  • registroChat.jsp



  • errorRegistroChat.jsp

No hay comentarios:

Publicar un comentario