What you are seeing is just how interfaces work. Something must implement them because, as you've rightly noticed, you cannot instantiate an interface. The Servlet container (e.g. Tomcat) is what provides the implementation. So they are of the type HttpServletRequest and HttpServletResponse (because they inmplement those interfaces), but their concrete implementation will be something else. As far as you are a Servlet/JSP writer you don't need to know/care what that implementation, because you will never use it directly.