public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler
'If-Modified-Since' header to
take advantage of browser cache, as described in
RFC 2616.
/file1.txt./file1.txt is cached by the browser./file1.txt does return the contents of the
file again. Rather, a 304 Not Modified is returned. This tells the
browser to use the contents stored in its cache.If-Modified-Since date is the same as the file's last
modified date.Request #1 Headers =================== GET /file1.txt HTTP/1.1 Response #1 Headers =================== HTTP/1.1 200 OK Date: Tue, 01 Mar 2011 22:44:26 GMT Last-Modified: Wed, 30 Jun 2010 21:36:48 GMT Expires: Tue, 01 Mar 2012 22:44:26 GMT Cache-Control: private, max-age=31536000 Request #2 Headers =================== GET /file1.txt HTTP/1.1 If-Modified-Since: Wed, 30 Jun 2010 21:36:48 GMT Response #2 Headers =================== HTTP/1.1 304 Not Modified Date: Tue, 01 Mar 2011 22:44:28 GMT
ChannelHandler.Sharable| Modifier and Type | Field and Description |
|---|---|
(package private) static int |
HTTP_CACHE_SECONDS |
(package private) static java.lang.String |
HTTP_DATE_FORMAT |
(package private) static java.lang.String |
HTTP_DATE_GMT_TIMEZONE |
| Constructor and Description |
|---|
HttpStaticFileServerHandler() |
| Modifier and Type | Method and Description |
|---|---|
void |
exceptionCaught(ChannelHandlerContext ctx,
ExceptionEvent e)
Invoked when an exception was raised by an I/O thread or a
ChannelHandler. |
void |
messageReceived(ChannelHandlerContext ctx,
MessageEvent e)
Invoked when a message object (e.g:
ChannelBuffer) was received
from a remote peer. |
private static java.lang.String |
sanitizeUri(java.lang.String uri) |
private static void |
sendError(ChannelHandlerContext ctx,
HttpResponseStatus status) |
private static void |
sendNotModified(ChannelHandlerContext ctx)
When file timestamp is the same as what the browser is sending up, send a "304 Not Modified"
|
private static void |
setContentTypeHeader(HttpResponse response,
java.io.File file)
Sets the content type header for the HTTP Response
|
private static void |
setDateAndCacheHeaders(HttpResponse response,
java.io.File fileToCache)
Sets the Date and Cache headers for the HTTP Response
|
private static void |
setDateHeader(HttpResponse response)
Sets the Date header for the HTTP response
|
channelBound, channelClosed, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeCompletestatic final java.lang.String HTTP_DATE_FORMAT
static final java.lang.String HTTP_DATE_GMT_TIMEZONE
static final int HTTP_CACHE_SECONDS
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandlerChannelBuffer) was received
from a remote peer.messageReceived in class SimpleChannelUpstreamHandlerjava.lang.Exceptionpublic void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
SimpleChannelUpstreamHandlerChannelHandler.exceptionCaught in class SimpleChannelUpstreamHandlerprivate static java.lang.String sanitizeUri(java.lang.String uri)
private static void sendError(ChannelHandlerContext ctx, HttpResponseStatus status)
private static void sendNotModified(ChannelHandlerContext ctx)
private static void setDateHeader(HttpResponse response)
private static void setDateAndCacheHeaders(HttpResponse response, java.io.File fileToCache)
fileToCache - the file to extract content typeprivate static void setContentTypeHeader(HttpResponse response, java.io.File file)
file - the file to extract content type