This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
It is not really possible to make servlets for handling other protocols than HTTP.
The protocol is handled by the servlet container, not the servlet itself. If you want to have FTP commands sent to a servlet, you need a special servlet container that handles the FTP protocol and sends the received FTP commands to a servlet. As far as I know there are no servlet containers available that can do this.
According to the the Javadoc the only method that you must override is service(). You could look at the patterns used in HttpServlet to get some ideas. For the FTP protocol I could see things like doPut(), doGet(), doList(), and so on. You service() method would parse appropriately and call those methods on a FTPServlet.
The real issue, as was pointed out, is that the container handles the actual protocol. This is a not so subtle side effect of the J2EE servlet specification. Sure, you could have a FTPServlet, a SMTPServlet, and whatever other kind of protocol you want. But at the lowest level something has to be listening for a connection on a particular port and route packets to and from that port appropriately. Tomcat follows the servlet spec but doesn't have a Connector (a Tomcat term) for FTP. It really wouldn't be too bad to write one. Looking at the docs for Http11Processor you'll see that it implements two interfaces. Basically you want to create your own connector for Tomcat.
All of this is great, but forget about portability. If you want this to work in WebLogic or WebSphere you'll have to figure out their API's too.
I don't know that this is quite PhD level but is isn't trival either.
<a href="http://forums.hotjoe.com/forums/list.page" target="_blank" rel="nofollow">Java forums using Java software</a> - Come and help get them started.