java - Redirection from Servlet/Filter does not work -


i have problem redirection - not work valid paths. right use page forwarding in servlet, need redirection in filter.

all pages reside in 'pages' folder , have .jspx extension

i've tried following (this path works forwarding):

httpresponse.sendredirect("/pages/login.jspx"); 

browser url http://[localhost]/pages/login.jspx, , shows tomcat's 404 page, context path (in case it's '/hotel') missing url, so, if add it:

httpresponse.sendredirect("/hotel/pages/login.jspx"); 

redirect not happen, browser url not change, , i'm shown browser's 404 page (this program cannot display webpage).

what doing wrong?

the filter used test has following mapping:

@webfilter(filtername = "securityfilter", urlpatterns = "/*") 

the redirected url indeed relative requested url. dynamically prepend context path it's recommended use httpservletrequest#getcontextpath() instead of hardcoding it, because context path value can changed externally server-specific configuration.

as concrete problem, i'm not sure if understand "browser's 404 page" properly, perhaps mean browser-default error page can occur when server unreachable or when request has been redirected in infinite loop (that should have been made clear in actual message of browser default error page, @ least chrome , firefox that).

given filter mapped on /*, it's redirecting in infinite loop because request url of login page in turn matches url pattern of filter.

you'd need either put filter on more specific url pattern not cover login page, e.g. on /secured/* restricted pages been moved in there (or map on /pages/* , put login page outside there), or fix filter follows:

string loginurl = request.getcontextpath() + "/pages/login.jspx";  if (needstoredirect && !request.getrequesturi().equals(loginurl)) {     response.sendredirect(loginurl); } else {     chain.dofilter(request, response); } 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -