前几天写了一篇“浅析jsp和servlet的区别”,这几天一直想写一下他们两者的深入区别,但今天上网查了一下,这方面的资料已经很多了,就不再赘述。为了完成念想,此篇仍命名“深剖jsp和servlet的区别”,只不过把随意浏览资料中看到的错误观点纠正一下。
1、jsp和servlet没有任何关系。
错 jsp本质上就是servlet,下面是一个jsp生成的.java代码:
可以看出,本质上仍然是servlet
2、因为jsp先生成.java文件,所以速度比servlet慢。
不完全对 jsp的确会先生成.java文件,然后编译成.class文件,但一般当你把你的项目部署到服务器上,在你的jsp不改变的前提下,一般只会第一次访问编译,以后都不会再编译,也就是说只有第一次访问比servlet慢,以后就基本同样的速度。如果有大量的jsp,可以选择预编译。
3、servlet在一个生命周期内只会实例化一次。
不是绝对的 这要根据你web.xml中的配置文件,如果同一个servlet对应多个name,那就不止一次了,几个name就实例化几次。
4、servlet和struts的action比较类似
你猜的很对 struts中的action就是对servlet的封装,不是类似。
5、只用servlet还要写很多html代码,太麻烦,用servlet和jsp也要在jsp中写java代码,只用jsp岂不更简单。
这明显不对 的确jsp就是因为需要在servlet中写大量的html代码才推出的。但只用jsp不是不可以,但坏处是:一、丢失了java语言的最大的优点-面向对象,在jsp中的java代码都是面向过程,所有的jsp中你看不到一个类。二、给后期维护带来太大的麻烦。软件开发不仅要实现功能,更要设计有弹性的代码。理想状态下jsp中不出现java代码,全部是标签和脚本语言。当然这是理想状态下。
。。。。。。。