I am currently writing an web application where you need to log in, using username and password. The next step in the process is to select a Project in which the logged in user is involved.
Once the project is selected and the submit button has been clicked, a servlet is called to prepare the selected project and create a requestDispatcher and .forward the req and resp to my mainpage.
The layout of the mainpage:
The header div:
<div><jsp:include page="header.do" flush="true"/></div>
The body div:
<div> code that is present in the mainpage.jsp </div>
The footer div:
<div><jsp:include page="footer.do" flush="true"/></div>
Lets say that these 3 divs make up the mainpage.
After forwarding the page with the requestDispatcher I get to see the mainpage’s content. However the <jsp:include>‘s are not loaded (the DIV’s are left empty). Only when I refresh the page (doGet, I assume) the includes will load correctly.
Is there anyway to let the includes load on a doPost requestDispatch execution?
**Note: The syntax of the requestDispatchers is exactly the same in the doPost and doGet methods.
If more clarification is needed, or extra code. Please let me know.
EDIT
Servlet container used:
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>
But what would the servlet mapping have to do with the doGet and doPost?
Kind regards,
B.
As mentioned in the comments, it looked like that the servlet which is listening on
header.doandfooter.dois restricted toGETrequests only. You need to ensure that it is to be executed onPOSTrequests as well.As to the new question in the comment:
Because the method of the HTTP request as fired by the client accounts. The
RequestDispatcherdoesn’t fire a brand new HTTP request or so (it’s only thesendRedirect()who is doing that). TheRequestDispatcherjust reuses the initial request for the included/forwarded resources. The request method won’t be changed and remains in this casePOSTin the included/forwarded resources.That said, you’d probably like to redesign/refactor all your
*.doservlets to a single central front controller servlet which has the necessary logic implemented inservice()method to avoid duplicated/boilerplate clutter. Or even better, adopt a MVC framework like JSF, Struts(2), Spring-MVC, etc. For more detail, check this answer.