1:servlet是服务器端的程序,动态生成html页面发到客户端,但是这样  
  程序里有许多out.println(),java和html语言混在一起很乱。所以  
  后来推出了jsp。其实jsp就是servlet,每一个jsp在第一次运行时被  
  转换成servlet文件,再编译成.class来运行。  
  有了jsp,因此在MVC模式中servlet不再负责生成html页面,转而担任  
  控制程序逻辑的作用,控制jsp和javabean之间的流转。

JSP先编译成SERVLET然后再编译成CLASS文件   
JSP-----SERVLET-----JAVA文件---CLASS  

2:JSP通过WEB容器编译成Servlet,再转化为.class文件  
  JSP是servelt的扩展,是由Servlet演变而来~~~~~  
  JSP       ---------VIEW  
  SERVLET-------CONTROLLER

3:jsp和servlet的区分是具体到MVC模式的出现而越发清晰的,在这个设计模式下:  
  jsp主要负责显示层,不负责业务逻辑的实现,即view  
  servlet里主要负责业务流程的控制,即controller  
  而数据模型一般通过javaBean和java类来封装。

4:Jsp是要先编译成servlet才执行的,但这里面还是有很多差别的,比如:Jsp主要是负责客户端的表现和与后台servlet的连接,而servlet实现的是事务处理和与数据库的连接,功能定位有很大的区别。Jsp是与Asp同类的动态网页开发 技术 ,而servlet实际上现在是采用了JavaBean组件技术的具体表现形式,可以将servlet或者更具体点说是JavaBean与ActiveX和Com/Dcom等并列,但绝对不能将它与Asp并列的。

5:Servlet:java包HTML  
  JSP:HTML包java

6:servlet   是纯java,在.java文件中输出http的标记语言  
  而jsp是在标记语言中嵌入java语句  
   
  在实际工作中jsp在第一次被call的时候被web   server编译成servlet,并且储存在缓冲区中,以后再请求,就直接调servlet,这样来提高速度

7:servlet   API   是一个具有跨平台特性,纯java的server-side   程序 ,它对应于在client   端执行的java   applet.  
  jsp(java   server   pages)是由sun   microsystems   公司倡导,许多公司参与一起建立的一种新动态网页技术标准,类似其他技术标准,如asp,php   是server-side   scripting   language.  
  sun公司首先发展出servlet,其功能非常强大,且体系设计完善,但是他输出html语法时,必须使用out.println()一句一句输出,例如:  

out.println("<html>");   
   out.println("<head><title>demo</title></head>");   
   out.println("hello   world<br>");   
   out.println("大家好“);   
   out.println("</body>");   
   out.println("</html>");


  这段程序比较小,所以看起来不是很复杂,但是当网页很复杂时,这种方法就不方便了。  
  下面一段是jsp:  

<html>   
   <head><title>demo</title></head>   
   <body>   
   <%   
   out.pritnln("hello   world<br>");   
   out.pritnln("大家好");   
   %>   
   </body>   
   </html>


  这样简化了web网页设计的负荷.