> From: Nathan Potter [mailto:[email protected]]
> Subject: Re: Tomcat returns HTTP status of 200 when
> HttpServletResponse.sendError() called.
Sorry for not responding earlier, things have been a little hectic this week.
> I just got try it today and here is what happened:
I just tried the same thing, with no problems.
> I made this class:
I don't see a package clause in your code, nor are the imports shown. Here's
the entire code I used, including the poor man's logger, System.out:
package mypackage;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.Globals;
public class StaticContentServlet extends
org.apache.catalina.servlets.DefaultServlet {
protected String getRelativePath(HttpServletRequest request) {
// Are we being processed by a RequestDispatcher.include()?
if (request.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR) != null) {
String result =
(String)request.getAttribute(Globals.INCLUDE_PATH_INFO_ATTR);
if (result == null) {
result =
(String)request.getAttribute(Globals.INCLUDE_SERVLET_PATH_ATTR);
}
if (result == null || result.equals("")) result = "/";
System.out.println("StaticContentServlet returning " + result);
return result;
}
// No, extract the desired path directly from the request.
String result = request.getPathInfo();
if (result == null) {
result = request.getServletPath();
} else {
result = request.getServletPath() + result;
}
if (result == null || result.equals("")) result = "/";
System.out.println("StaticContentServlet returning " + result);
return result;
}
}
> I added it to my web.xml file:
Mine is almost the same, with the addition of a listings param:
<servlet>
<servlet-name>docs</servlet-name>
<servlet-class>mypackage.StaticContentServlet</servlet-class>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
just so the /docs mapping would do something useful. (The servlet mappings are
identical to yours.)
Referencing the URLs:
http://localhost:8080/sample/docs
http://localhost:8080/sample/docs/test.txt
got me this result in stdout:
StaticContentServlet returning /docs
StaticContentServlet returning /docs/test.txt
and the expected directory listings and the text file contents in the browser
window.
- Chuck
THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY
MATERIAL and is thus for use only by the intended recipient. If you received
this in error, please contact the sender and delete the e-mail and its
attachments from all computers.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]