java - Servlet doesn't execute response.sendRedirect(addressPath); , but does execute response.sendRedirect() without path -
consider following hierarchy :

when send redirect :
response.sendredirect("error404.jsp"); // no path here !!! i reach page error404.jsp .
but when use path :
string addresspath = "/web-inf/results/admin/adminpage.jsp"; response.sendredirect(addresspath); // path !!! i 404 :
http status 404 - type status report message description requested resource not available. apache tomcat/7.0.50 what doing wrong here ?
much appreciated !
see javadoc
this method can accept relative urls;the servlet container must convert relative url absolute url before sending response client. if location relative without leading '/' container interprets relative current request uri. if location relative leading '/' container interprets relative servlet container root. if location relative 2 leading '/' container interprets network-path reference (see rfc 3986: uniform resource identifier (uri): generic syntax, section 4.2 "relative reference").
note argument not path within servlet context requestdispatcher use, url used in location header of 302 response.
so this
string addresspath = "/web-inf/results/admin/adminpage.jsp"; response.sendredirect(addresspath); // path !!! will transformed 302 response header
location: http://whateverhost.com/web-inf/results/admin/adminpage.jsp which don't have handler for, 404.
on other hand, this
response.sendredirect("error404.jsp"); // no path here !!! becomes
location: http://whateverhost.com/context-path/error404.jsp since error404.jsp outside web-inf, accessible , therefore rendered jsp servlet , returned response.
Comments
Post a Comment