Servlet Framework

return netsvc.ErrorServlet(404)

daemon = netsvc.HttpDaemon(8000) server = HttpServer() daemon.attach("/test",server) daemon.start()

The job of the "servlet()" member function is to create an instance of a HTTP servlet capable of handling a request made against a specific URL. When the "servlet()" member function is called it is supplied with the HTTP session object. The session object provides access to details of the request, including the server root and servlet path. The server root corresponds to the path under which the HTTP server object was registered. The servlet path is the remainder of the path expressed relative to that server root.

As an example, if the request used the path "/test/echo" and the HTTP server object was regis- tered with the path "/test", the server root would be "/test" and the servlet path would be "echo". In the case that a HTTP server object is registered with path "/", the server root will still be "/". This is the only case where the trailing "/" isn’t removed.

Under normal circumstances the HTTP server object would determine the type of HTTP servlet to cre- ate and the resource being referenced based only on the servlet path. If necessary however, it can query other information related to a request. Such a circumstance might be to look for the presence of cookies used to implement a user session mechanism.

When a HTTP servlet is created, it will need to be passed the handle to the HTTP session object. All the predefined HTTP servlets accept this as the first argument when the servlet is created. If you are defining your own servlets, it is recommended you follow this convention.

If the HTTP server object isn’t able to map a request to a particular type of HTTP servlet, the "serv- let()" member function should return "None", or should indicate a specific type of HTTP error re- sponse using the ErrorServlet class. A HTTP client can be redirected to a different resource using the RedirectServlet class.

The Error Servlet

The error servlet as implemented by the ErrorServlet class is provided as a quick way for a cus- tom HTTP server object to return a HTTP error response. In addition to the the HTTP session object, the error servlet needs to be supplied with an approriate HTTP error response code. Text to be included in the body of the response can also be provided if desired. Such text may include any relevant HTML markup, but should not include the opening and closing "body" tags.

class HttpServer(netsvc.HttpServer): def servlet(self,session):

return netsvc.ErrorServlet(session,501,"Not implemented.")

92

Page 92
Image 92
Python Python Manual, 7.0pl5 manual Error Servlet