/ / Corregir el flujo de URL para la aplicación web Java-spark - web, spark-framework

Corregir el flujo de URL para la aplicación web Java-spark: web, spark-framework

Mi aplicación web se crea con Spark Framework (Conectando en la misma página que el servidor) la URL de la primera página es http://localhost:4567/start Desde aquí, el usuario hace clic en un botón para decidir una de las cuatro tareas. El botón de acción del formulario es / iniciar

El servidor verifica que todo esté bien y luego devuelve la nueva página para esta tarea (por ejemplo, fixsongs) (es decir, devuelve el contenido de la página como una cadena) desde la página.

post(RoutePath.START, (request, response)       -> new ServerStart().processRoute(request, response));//User has picked task on start page

ServerFixSongs ssfs = new ServerFixSongs();
path(RoutePath.STARTFIXSONGS, () ->
{
//Display Page
post(RoutePath.FIX,             (request, response) -> ssfs.startTask(request, response)); //User submits form on Options page
});

El problema es url permanece igual, es decir, uno detrás de donde está el usuario

Ahora he descubierto cómo resolver esto, en su lugarde la página de retorno del servidor ahora hace una redirección a /fixsongs.go (esto está mapeado en rutas) que llama al método que luego devuelve el contenido de la página como una cadena y modifica la URL.

post(RoutePath.START, (request, response)       -> new ServerStart().processRoute(request, response));//User has picked task on start page
ServerFixSongs ssfs = new ServerFixSongs();
path(RoutePath.STARTFIXSONGS, () ->
{
get(RoutePath.GO,               (request, response) -> new FixSongsPage(request.session().attribute(FOLDER)).createPage(null, null)); //Display Page
post(RoutePath.FIX,             (request, response) -> ssfs.startTask(request, response)); //User submits form on Options page
});

Pero tengo dos preguntas

  1. ¿Es este enfoque más engorroso la forma correcta de hacer esto?
  2. ¿Estos pasos adicionales de redireccionamiento afectan el rendimiento?

Tenga en cuenta que no estoy usando plantillas, sino que estoy creando páginas web usando j2html

No puedo hacer una redirección directamente a un archivo html en la primera llamada ya que el html no existe realmente, las páginas se crean dinámicamente.

También me he dado cuenta de que aunque cuando me sometoiniciar tarea desde la página INICIO envío una solicitud POST porque estoy redirigiendo a STARTFIXSONGS, esto significa que en la siguiente etapa el usuario puede usar el botón ATRÁS para volver a STARTFIXSONGS. Preferiría que no pudieran hacer esto, entonces esto significa que no debería usar redirecciones en este caso.

Respuestas

0 para la respuesta № 1

Su pregunta no está realmente relacionada con Spark o j2html, sino con aplicaciones web en general.

¿Es este enfoque más engorroso la forma correcta de hacer esto?

Depende de lo que quieras. Si desea que los usuarios puedan navegar utilizando los botones del navegador, utilice el flujo Post-Redirect-Get. Si no quiere esto, probablemente debería usar peticiones ajax, donde publica en el servidor usando JavaScript y el servidor responde con instrucciones para actualizar el DOM (generalmente en formato JSON)

¿Estos pasos adicionales de redireccionamiento afectan el rendimiento?

No es suficiente para que te preocupes por eso.Obtienes un viaje de ida y vuelta más, pero en el 99,9% de los casos no importa. Si tu base de usuarios objetivo está navegando por tu página usando GPRS en un continente diferente, lo haría, pero probablemente ese no sea el caso.