SUN公司先发展出servlet,但是servlet在输出html的时候还是采取了CGI的老方式,即一句一句输出,这给当时的编程人员在编写和修改html的时候带来不小的麻烦。后来SUN推出了类似ASP的jsp,将jsp tag(jsp标签)镶嵌到html中,这大大简化了设计和修改html的工作,而且jsp能实现servlet的几乎所有功能。也许你会问那为什么现在还要serlet,直接用jsp替代不就行了?这主要是设计模式的缘故,presentation layer和business layer分开,使一个web项目的结构变得清晰,高效。
如目前流行的MVC(Model-View-Controller)设计模式中,"View" 是应用的表示面(JSP页面),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
总结一下吧,JSP其实就是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。而且JSP编译后就是一个"servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。所以JSP侧重于视图,Servlet主要用于控制逻辑。