JSP: no incluyen ser llamado en la página de reenvío utilizando doPost RequestDispatcher

StackOverflow https://stackoverflow.com/questions/4144865

Pregunta

Actualmente estoy escribiendo una aplicación web en la que tienes que entrar en, usando nombre de usuario y contraseña. El siguiente paso en el proceso es seleccionar un proyecto en el que el usuario conectado está involucrado.

Una vez seleccionado el proyecto y el botón de enviar se ha hecho clic, un servlet está llamado a preparar el proyecto seleccionado y crear un requestDispatcher y .forward el req y resp a mi MainPage.

El diseño de la MainPage:
La cabecera div:

<div><jsp:include page="header.do" flush="true"/></div>

El cuerpo div:

<div>   code that is present in the mainpage.jsp </div>

El div pie de página:

<div><jsp:include page="footer.do" flush="true"/></div>

Le dicen que estos 3 divs conforman el MainPage.

Después de reenvío de la página con el requestDispatcher consigo ver el contenido de la MainPage. Sin embargo los de <jsp:include> no están cargados (las de DIV se dejan vacíos). Sólo cuando actualice la página (doGet, supongo) incluye la va a cargar correctamente.

¿Hay alguna forma para que la incluye carga en una ejecución doPost requestDispatch?

** Nota: La sintaxis de los requestDispatchers es exactamente el mismo en los métodos y doPost doGet.

Si se necesita más aclaraciones, o código adicional. Por favor, hágamelo saber.


Editar

contenedor de servlets utilizado: Tomcat 6.0

Web.xml:

<!--- Servlet Mapping for Project Selection Servlet-->
<servlet>
    <servlet-name>ProjectSelect</servlet-name>
    <servlet-class>MyProject.Login.ProjectSelect</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ProjectSelect</servlet-name>
    <url-pattern>/ProjectSelect.do</url-pattern>
</servlet-mapping>

Pero lo que sería la correlación de servlet tiene que ver con la doGet y doPost?


Saludos cordiales,

B.

¿Fue útil?

Solución

Como se ha mencionado en los comentarios, parecía que el servlet que está escuchando en header.do y footer.do se limita a las solicitudes GET solamente. Es necesario asegurarse de que se va a ejecutar en las solicitudes POST también.

En cuanto a la nueva pregunta en el comentario:

  

¿Por qué es el método doPost() llamada cuando un <jsp:include> se llama desde otra página JSP?

Debido a que el método de la solicitud HTTP como despedido por las cuentas de los clientes. El RequestDispatcher no se dispara una nueva petición HTTP marca más o menos (que es sólo el sendRedirect() que está haciendo eso). El RequestDispatcher simplemente reutilizaciones la petición inicial de los recursos incluidos / reenviados. El método de la petición no será cambiada y permanece en este caso POST en los recursos incluidos / reenviados.


Dicho esto, lo que probablemente como para rediseñar / refactor todos los servlets *.do a un único servlet controlador central que tiene la lógica necesaria implementado en el método service() Para evitar duplicados / desorden repetitivo. O mejor aún, adoptar un marco MVC como JSF, Struts (2), Spring-MVC, etc. Para más detalle, Cheque esta respuesta .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top