Esta publicación servirá para ir colocando fragmentos de consultas que en algún momento me fueron útiles para usarlo en MongoDB Fragmento 1: Se requería obtener todos los elementos que dentro de un atributo que es de tipo array(arreglo) coincida con type:"fire" Fragmento 2: Se requería actualizar el atributo " lastUpdate " de toda la colección donde la edad sea mayor o igual a 15.
Esta ocacion traigo un pequeño ejemplo de como realizar el polling con DWR si claro es lo mismo cque hacer muchas llamadas ajax con jquery si , pero es otra forma de trabajar con javascipt y java, pues bien espero darme a entender y con la finalidad de que alguien le sirva esto quedaria algo asi:
Lo primero que necesitamos es la esturctura del proyecto esta debe quedar algo asi
Empezamos con la pagina jsp.
Colocamos en el body:
<ul class="nav nav-tabs" role="tablist" id="myTab">
<li class="active"><a href="#lapestana" role="tab"
data-toggle="tab">Usuarios</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="lapestana">
<table id="gridUsuarios" class="tablaAlertas"></table>
</div>
</div>
En spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr/spring-dwr-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.elkardumen.controller" />
<mvc:annotation-driven />
<dwr:controller id="dwrController" debug="true">
<dwr:config-param name="crossDomainSessionSecurity" value="false"/>
<dwr:config-param name="activeReverseAjaxEnabled" value="true"/>
<dwr:config-param name="pollAndCometEnabled" value="true" />
<dwr:config-param name="maxWaitAfterWrite" value="-1"/>
</dwr:controller>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property value="true" name="alwaysUseFullPath"></property>
<property name="mappings">
<props>
<prop key="/dwr/**/*">dwrController</prop>
</props>
</property>
</bean>
<!--Genera Campos Filtro -->
<bean id="filterScripGenerator" class="com.elkardumen.service.FilterScripGenerator">
<dwr:remote javascript="filterScripGenerator">
<dwr:include method="getMensaje"/>
</dwr:remote>
</bean>
<bean id="hiloLog" class="com.elkardumen.service.HiloLog" scope="application">
<dwr:remote javascript="hiloLog">
<dwr:include method="arranca"/>
</dwr:remote>
</bean>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
EN el web.xml
En Usuario.java
En ControllerApp.java
package com.elkardumen.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerApp {
@RequestMapping("/pageInit.html")
public String logTasPage() {
return "paginaInicial";
}
}
En FilterScripGenerator.java
En HiloLog
package com.elkardumen.servlet;
import javax.servlet.ServletContextEvent;
public class ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("Servlet conext destroyed");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Servlet conext initialized .");
}
}
Estas son alguas de las clases y archivos .js principales si quieres ver mas por favor descarga el proyecto y despliega en tu IDE favorito:
https://github.com/xola139/SimplePollingSpringDWR
DESCARGA .ZIP
Lo primero que necesitamos es la esturctura del proyecto esta debe quedar algo asi
Empezamos con la pagina jsp.
Colocamos en el body:
<ul class="nav nav-tabs" role="tablist" id="myTab">
<li class="active"><a href="#lapestana" role="tab"
data-toggle="tab">Usuarios</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="lapestana">
<table id="gridUsuarios" class="tablaAlertas"></table>
</div>
</div>
En spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr/spring-dwr-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.elkardumen.controller" />
<mvc:annotation-driven />
<dwr:controller id="dwrController" debug="true">
<dwr:config-param name="crossDomainSessionSecurity" value="false"/>
<dwr:config-param name="activeReverseAjaxEnabled" value="true"/>
<dwr:config-param name="pollAndCometEnabled" value="true" />
<dwr:config-param name="maxWaitAfterWrite" value="-1"/>
</dwr:controller>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property value="true" name="alwaysUseFullPath"></property>
<property name="mappings">
<props>
<prop key="/dwr/**/*">dwrController</prop>
</props>
</property>
</bean>
<!--Genera Campos Filtro -->
<bean id="filterScripGenerator" class="com.elkardumen.service.FilterScripGenerator">
<dwr:remote javascript="filterScripGenerator">
<dwr:include method="getMensaje"/>
</dwr:remote>
</bean>
<bean id="hiloLog" class="com.elkardumen.service.HiloLog" scope="application">
<dwr:remote javascript="hiloLog">
<dwr:include method="arranca"/>
</dwr:remote>
</bean>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
EN el web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>Simple Polling DWR</display-name>
<description>Simple Polling DWR</description>
<!-- ************************** spring NO MVC ************************** -->
<!-- <listener> -->
<!-- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
<!-- </listener> -->
<!-- <context-param> -->
<!-- <param-name>contextConfigLocation</param-name> -->
<!-- <param-value>/WEB-INF/applicationContext*.xml</param-value> -->
<!-- </context-param> -->
<listener>
<listener-class>com.elkardumen.servlet.ServletContextListener</listener-class>
</listener>
<!-- ************************** spring MVC ************************** -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet><servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/pages/paginaInicial.jsp</welcome-file>
</welcome-file-list>
</web-app>
En Usuario.java
package com.elkardumen.bean;
public class Usuario {
private String id;
private String firstname;
private String lastname;
private String email;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
En ControllerApp.java
package com.elkardumen.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerApp {
@RequestMapping("/pageInit.html")
public String logTasPage() {
return "paginaInicial";
}
}
En FilterScripGenerator.java
package com.elkardumen.service;
public class FilterScripGenerator {
public FilterScripGenerator() { }
public String getMensaje(String idTabla, String[] campos) throws Exception {
StringBuilder declaraCondiciones = new StringBuilder();
StringBuilder colocaCondiciones = new StringBuilder();
for (String v : campos) {
String identificador = idTabla + v;
declaraCondiciones.append("var condicion" + identificador + "= $(\\\"#idforcheck" + identificador + "\\\").attr('aria-pressed')=='true' ? " +
"\\\"String(obj." + v.replace('_', '.') + ").toLowerCase().indexOf(String($(\\\\\\\"#gs_" + identificador + "\\\\\\\").val()).toLowerCase())!=0\\\":" +
"\\\"String(obj." + v.replace('_', '.') + ").toLowerCase().indexOf(String($(\\\\\\\"#gs_" + identificador + "\\\\\\\").val()).toLowerCase())==0\\\";");
colocaCondiciones.append(" eval(condicion" + identificador + ") &&");
}
colocaCondiciones.delete(colocaCondiciones.length()-2, colocaCondiciones.length());
return "{\"idTabla\":\"" + idTabla + "\",\"declaraCondiciones\":\""+declaraCondiciones+"\",\"colocaCondiciones\":\""+colocaCondiciones+"\"}";
}
}
En HiloLog
package com.elkardumen.service;En ServletContextListener
import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;
import com.elkardumen.bean.Usuario;
import com.google.gson.Gson;
public class HiloLog implements Runnable {
private static boolean active = true;
int count=0;
Usuario user=new Usuario();
public HiloLog() {
new Thread(this).start();
}
public synchronized void arranca() {
}
@Override
public void run() {
while (active) {
count++;
try {
Browser.withPage("/SimplePollingSpringDWR/pageInit.html",
new Runnable() {
public void run() {
user.setId(String.valueOf(count));
user.setFirstname("Nombre "+ count);
user.setLastname("LastName "+count);
user.setLastname("Email "+count);
user.setPassword("Password"+count);
ScriptSessions.addFunctionCall("evento", new Gson().toJson(user));
}
}
);
} catch (Exception e1) {
System.out.println("Excepcion al enviar mensaje. " + e1.getMessage());
}
try {
Thread.sleep(5000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("Hilo terminado");
}
public static boolean isActive() {
return active;
}
public static void setActive(boolean active) {
HiloLog.active = active;
}
}
package com.elkardumen.servlet;
import javax.servlet.ServletContextEvent;
public class ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("Servlet conext destroyed");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Servlet conext initialized .");
}
}
Estas son alguas de las clases y archivos .js principales si quieres ver mas por favor descarga el proyecto y despliega en tu IDE favorito:
https://github.com/xola139/SimplePollingSpringDWR
DESCARGA .ZIP
Comentarios
Publicar un comentario