Servlets are Java classes that extend the capabilities of servers hosting applications accessed through request-response protocols, mainly for extending web applications. JSPs are text documents containing static and dynamic data, with dynamic content expressed through JSP elements. Servlets play a controller role in MVC while JSPs are used for views. Servlets are faster than JSPs because JSPs must first be translated to Java code and compiled, while servlets can override service methods and handle all protocols, unlike JSPs which only handle HTTP requests.