一直都明白jsp和servlet的区别,也一直都很难瞬间用语言表达出来,近来,终于决定整理一下。
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
一句话概括,Servlet和jsp的区别就是:servlet是java代码中嵌套html代码,jsp是html代码中嵌套servlet代码。但本质上却也没太大区别,jsp本质上也是一个servlet。下图说明了这个问题:
jsp本质上是个servlet,因为在用户第一次访问jsp时,该jsp会先转成java文件,然后再编译成class文件,如果该jsp没有改变的话,在服务器的周期中该jsp只在第一次编译,后面的用户即使再访问,也不会再编译。所以本质上jsp还是个servlet。
虽然上文说到jsp和servlet的明显区别在代码嵌套方面。但我们总是在追求高内聚,低耦合的系统,追求能多次复用并且易于维护的系统,很明显,不论java代码中嵌套大量html或者html中嵌套大量java代码,都给维护造成很大困难,当然也会给开发加大了很大的工作量。所以现在基本不在servlet中写html代码,也尽量少在jsp中写java代码。只让servlet完成控制器(C)的功能,只让jsp完成视图(V)的功能