2010-03-12 14 views
8

Quiero usar el token #! para hacer mi aplicación GWT rastreable, como se describe aquí: http://code.google.com/web/ajaxcrawling/Haciendo aplicación GWT rastreable por un motor de búsqueda

No es una aplicación de ejemplo disponible en línea GWT que utiliza esto, por ejemplo: http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton

servirá a la siguiente página web estática al robot de Google: http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton

quiero que mi GWT aplicación para hacer algo similar. En resumen, me gustaría servir un sabor diferente de la página siempre que el parámetro _escaped_fragment_ se encuentre en la URL.

¿Qué debo modificar para que el servidor sirva algo más (una página estática, o una página generada dinámicamente a través de un navegador sin cabeza como HTML Unit)? Supongo que podría ser el archivo web.xml, pero no estoy seguro.

(Nota: He pensado en el control de la aplicación Escaparate proporcionado con el SDK de GWT, pero por desgracia, no parece necesaria para servir archivos estáticos en _escaped_fragment_ y no utilizar el token #! ..)

+0

Publicación cruzada en GWT Google Group. También es posible que desee leer las respuestas allí: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/15a922e701e9e2db?hl=es –

+0

He publicado una pregunta para generar más debate sobre este tema. tema. "¿Cómo hacer que las aplicaciones AJAX se puedan rastrear? ¿Cómo crear un servicio web simple en Google App Engine para producir instantáneas HTML?" http://stackoverflow.com/questions/3517944/making-ajax-applications-crawlable-how-to-build-a-simple-web-service-on-google-a –

Respuesta

2

Si desea usar web.xml, entonces creo que no funcionará con un mapeo de servlet, porque los url-patterns ignoran los parámetros get. (No es 100% seguro, si hay otra manera de hacerlo posible).

Por supuesto, puede asignar un Showcase.html a un servlet, y en ese servlet decidir qué hacer, según el parámetro get "_escaped_fragment_" . Pero es un poco caro llamar a un Servlet solo para que sirva una página estática para la mayoría de las solicitudes (no está mal, pero aún. Podría establecer encabezados de caché, si está seguro de que no cambian).

O podría tener un Apache o algo en frente de su servidor, pero entiendo, tampoco me gustaría tener que hacer eso. Tal vez su servidor JavaEE (¿a quién está usando BTW?) Proporciona algún mecanismo para el filtrado de URL antes de que la solicitud pase al contenedor web. ¡También me gustaría saberlo!

+0

Gracias por el comentario perspicaz. Estoy ejecutando mi proyecto en Google App Engine, así que no estoy seguro de cuánto acceso (o incluso qué) servlet container estoy usando ... Sin embargo, probablemente podría averiguarlo. Después de leer un poco, estaba pensando que los filtros podrían hacer el truco, si solo reciben el parámetro get. Lo comprobaré. –

+0

Usar un filtro es bastante similar al uso de un servlet en este caso (no creo que haya mucha diferencia en el rendimiento). En cualquier caso, debería poder recuperar el parámetro get a través de servletRequest.getParameter (...) –

+0

Tiene sentido. Sin embargo, el filtro permite continuar con el resto de la cadena de filtro si no quiero manejar la solicitud (es decir,el parámetro _escaped_fragment_ no está presente). ¿Hay alguna manera de hacer lo mismo con un servlet? –

2

¡Encontré mi respuesta! La muestra Showcase apoyo hipervínculos se puedan rastrear está en la siguiente rama: http://code.google.com/p/google-web-toolkit/source/browse/branches/crawlability/samples/showcase/?r=7726

Define un filtro en la web.xml para redirigir las URL con los _escaped_fragment_ de contadores a la salida de la unidad HTML.

+0

Solo para comentar lo anterior. Esto probablemente funcionaría si usa su propio Tomcat. Por mi parte, me estoy ejecutando en Google App Engine. El problema ahora es que la Unidad HTML no se ejecuta en App Engine, pero podría hacerlo pronto, según: http://www.google.com/url?sa=D&q=https://sourceforge.net /tracker/index.php%3Ffunc%3Ddetail%26aid%3D2962074%26group_id%3D47038%26atid%3D448269%23&usg=AFQjCNGGJuWPDqFfUuc4k44HormgSgEM6g –

+0

esa rama ya no existe, es decir, esta ya no es una respuesta útil, ni mucho menos correcta. –

+0

Lo siento. No puedo encontrarlo en ningún lado, lo desactivé y corregí. –

Cuestiones relacionadas