Servlet和JSP的关系很微妙。先是有了Servlet,才慢慢引出来的JSP,前期Servlet就是把逻辑处理和页面显示的一些东西都杂合在一个类文件中,这样耦合性很高,并且谈不上什么复用性,有的可能只是复制。JSP的出现就把JavaWeb开发人员从繁重的Servlet编码中解救出来了,将其中的页面代码和处理代码进行了一定程度的解耦。就像ASP.NET中*.aspx文件和*.aspx.cs文件的解耦关系是一样的。
基本流程如下图所示:
在这里,Web客户端的JSP页面请求(Request)发送到服务器端,则会把该JSP文件进行JSP引擎处理生成一个Servlet源码,再由Servlet引擎处理生成Servlet相应Web客户端用户请求,并输出标准HTML源码到Web客户端,再通过浏览器解析,则可得到我们的结果页面。其实JSP就是Servlet的一种简化,页面中每个JSP页面都会由Servlet容器生成对应的Servlet。
现在,面向对象中最为推崇的高重用,低耦合,就很好的体现在Servlet和JSP之间。JSP做显示用,而Servlet做逻辑用。功能单一化,好处有很多。
粗言浅语,还望高手不吝拍砖。