JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
Servlet以及Jsp的生命周期
Servlet由init()方法初始化,service()方法进行Web服务,destroy()方法进行销毁,从生到灭都由容器来掌握。Servlet生命周期方法都是回调方法。回调这个概念简单来说就是把自己注入另外一个类中,由它来调用你的方法,所谓的另外一个类就是Web容器,它只认识接口和接口的方法,注入进来的是怎样的对象不管,它只会根据所需调用这个对象在接口定义存在的那些方法。由容器来调用的Servlet对象的初始化、服务和销毁方法,所以叫做回调。
那么Jsp呢?本事上是Servlet,还是有些区别的,它的生命周期是这样的:a)一个客户端的Request到达服务器;b) 判断是否第一次调用 ,是的话编译Jsp成Servlet;c)否的话再判断此Jsp是否有改变,是的话也重新编译Jsp成Servlet;d)已经编译最近版本的Servlet装载所需的其他Class;e)发布Servlet,即调用它的Service()方法。
所以Jsp号称的是第一次Load缓慢,以后都会很快的运行。这里稍微解释一下Http的无状态性,因为发现很多人误解,Http的无状态性是指每次一张页面显示出来了,与服务器的连接其实就已经断开了,当再次有提交动作的时候,才会再次与服务器进行连接请求提供服务。
JSP 表示层;servlet控制层;ejb 模型层;Hibernate 数据层;struts 表示层;spring;业务层