The /logged/form.jsp
ought to be the right one. I suggest to read the appserver logs. Big chance that there's an IllegalStateException: response already committed
inside.
Wait, wait, your actual problem is thus that you want to change the URL which the visitor sees in the address bar?
If so, then no, that isn't possible with a forward. I'd then suggest to solve the problem from the other side on. Just "hide" form.jsp
in the /WEB-INF
folder and use a servlet all the time to get/post the form.
Pseudo:
protected void doGet(request, response) {
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
protected void doPost(request, response) {
doYourSubmitThingHere();
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
map this servlet on an url-pattern
of /logged/form
, replace the <form method="post" action="/servlet">
by <form method="post" action="/logged/form">
and then you can use/invoke it by http://example.com/logged/form
.
You can also go a step further by adopting the page controller pattern and make use of HttpServletRequest#getPathInfo()
to obtain the request path (and the JSP file's path) so that you don't need to boil a new servlet for every JSP.