Package org.klomp.snark.web
Class BasicServlet
java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.klomp.snark.web.BasicServlet
- All Implemented Interfaces:
Serializable
,Servlet
,ServletConfig
- Direct Known Subclasses:
I2PSnarkServlet
class BasicServlet extends HttpServlet
Based on DefaultServlet from Jetty 6.1.26, heavily simplified
and modified to remove all dependencies on Jetty libs.
Supports HEAD and GET only, for resources from the .war and local files.
Supports files and resource only.
Supports MIME types with local overrides and additions.
Supports Last-Modified.
Supports single request ranges.
Does not support directories or "welcome files".
Does not support gzip.
Does not support multiple request ranges.
Does not cache.
POST returns 405.
Directories return 403.
Jar resources are sent with a long cache directive.
------------------------------------------------------------
The default servlet.
This servlet, normally mapped to /, provides the handling for static
content, OPTION and TRACE methods for the context.
The following initParameters are supported, these can be set
on the servlet itself:
resourceBase Set to replace the context resource base warBase Path allowed for resource in war
- Since:
- Jetty 7
- Author:
- Greg Wilkins (gregw), Nigel Canonizado
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
BasicServlet.HttpContent
from Jetty HttpContent.java -
Field Summary
Fields Modifier and Type Field Description protected I2PAppContext
_context
protected Log
_log
protected File
_resourceBase
-
Constructor Summary
Constructors Constructor Description BasicServlet()
-
Method Summary
Modifier and Type Method Description protected void
addMimeMapping(String extension, String type)
protected static String
addPaths(String base, String path)
Simple version of URIUtil.addPaths()protected static String
decodePath(String path)
Simple version of URIUtil.decodePath()protected void
doDelete(HttpServletRequest request, HttpServletResponse response)
protected void
doGet(HttpServletRequest request, HttpServletResponse response)
protected void
doOptions(HttpServletRequest request, HttpServletResponse response)
protected void
doPost(HttpServletRequest request, HttpServletResponse response)
protected void
doTrace(HttpServletRequest request, HttpServletResponse response)
protected static String
encodePath(String path)
Simple version of URIUtil.encodePath()BasicServlet.HttpContent
getContent(String pathInContext, long limit)
get Resource to serve.protected String
getMimeType(String filename)
Get the MIME type by filename extension.File
getResource(String pathInContext)
get Resource to serve.void
init(ServletConfig cfg)
protected void
loadMimeMap(String resourcePath)
protected boolean
passConditionalHeaders(HttpServletRequest request, HttpServletResponse response, BasicServlet.HttpContent content)
Check modification date headers.protected void
sendData(HttpServletRequest request, HttpServletResponse response, BasicServlet.HttpContent content)
protected void
setResourceBase(File base)
Files are served from hereprotected void
setWarBase(String base)
Only paths starting with this in the path are servedprotected void
writeHeaders(HttpServletResponse response, BasicServlet.HttpContent content, long count)
Methods inherited from class javax.servlet.http.HttpServlet
doHead, doPut, getLastModified, service, service
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Field Details
-
Constructor Details
-
BasicServlet
public BasicServlet()
-
-
Method Details
-
init
- Specified by:
init
in interfaceServlet
- Overrides:
init
in classGenericServlet
- Throws:
ServletException
-
setResourceBase
Files are served from here- Throws:
UnavailableException
-
setWarBase
Only paths starting with this in the path are served -
getResource
get Resource to serve. Map a path to a resource. The default implementation calls HttpContext.getResource but derived servlets may provide their own mapping.- Parameters:
pathInContext
- The path to find a resource for.- Returns:
- The resource to serve or null if not existing
-
getContent
get Resource to serve. Map a path to a resource. The default implementation calls HttpContext.getResource but derived servlets may provide their own mapping.- Parameters:
pathInContext
- The path to find a resource for.- Returns:
- The resource to serve or null. Returns null for directories
-
doGet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException- Overrides:
doGet
in classHttpServlet
- Throws:
ServletException
IOException
-
doPost
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException- Overrides:
doPost
in classHttpServlet
- Throws:
ServletException
IOException
-
doTrace
protected void doTrace(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException- Overrides:
doTrace
in classHttpServlet
- Throws:
ServletException
IOException
-
doOptions
protected void doOptions(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException- Overrides:
doOptions
in classHttpServlet
- Throws:
ServletException
IOException
-
doDelete
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException- Overrides:
doDelete
in classHttpServlet
- Throws:
ServletException
IOException
-
passConditionalHeaders
protected boolean passConditionalHeaders(HttpServletRequest request, HttpServletResponse response, BasicServlet.HttpContent content) throws IOExceptionCheck modification date headers.- Returns:
- true to keep going, false if handled here
- Throws:
IOException
-
sendData
protected void sendData(HttpServletRequest request, HttpServletResponse response, BasicServlet.HttpContent content) throws IOException- Throws:
IOException
-
writeHeaders
protected void writeHeaders(HttpServletResponse response, BasicServlet.HttpContent content, long count) throws IOException- Throws:
IOException
-
loadMimeMap
- Parameters:
resourcePath
- in the classpath, without ".properties" extension
-
getMimeType
Get the MIME type by filename extension.- Parameters:
filename
- A file name- Returns:
- MIME type matching the longest dot extension of the file name.
-
addMimeMapping
-
addPaths
Simple version of URIUtil.addPaths()- Parameters:
path
- may be null
-
decodePath
Simple version of URIUtil.decodePath()- Throws:
MalformedURLException
-
encodePath
Simple version of URIUtil.encodePath()
-