上个月写了《教你[servlet](http://blog.csdn.net/ysc1123/article/details/44588795)入门》,今天来探究一下关于jsp的那些故事。
[§ 回顾](http://blog.csdn.net/coolriver/myjavajava%20%E6%95%99%E7%A8%8BJAVAtextch10se01keqian.htm)
1. 什么是Web应用程序?
2. 什么是Servlet,和一般Java程序有什么区别?
3. 什么是JSP,和Java是什么关系?
4. JSP和Servlet有哪些异同点?
5. JSP和Servlet的主要用途?**
§ 一家亲
JSP:Java server Pages,是由sun 公司倡导、许多公司参与一起建立的一种动态网页技术标准。它在HTML代码中插入JSP标记及Java程序(Scriptlet)构成JSP界面,扩展名为.JSP。当客户端请求JSP文件时,web服务器会执行该JSP文件,然后以HTML的格式返回给客户。而JSP是构建在servlet智商的高层次的动态网页标准。所以从概念上来讲,相对servlet而言,JSP没有什么新东西,可以说概念是完全一样的,只是在实现方式上稍有不同而已。因此,****JSP就是servlet的一种变式。
§ JSP的运行方式
.JSP文件会在第一次被调用时进行编译,比如test.jsp文件会在第一次调用时被编译为test_jsp.java文件,之后和servlet文件的编译流程一样,被编译为.class文件。从这以后,如果再有客户需要请求该JSP页面,JSP页面不需要重新编译而是直接执行第一次已经编译好的.class文件。下面我们通过一张时序图来进一步了解JSP文件的调用和编译过程:
![](https://box.kancloud.cn/2016-03-10_56e132d77e2f2.jpg)
§ JSP的优点
###1.一次编译,多次、多处运行
JSP的脚本语言是Java语言,它具有Java语言的一切特性,像上图中显示的过程那样,在JSP文件被编译之后,有客户再次请求该页面时,JSP不需要被重新编译,而是直接执行早已经编译好的.class文件,因此执行效率会特别高。
### 2.组件可重用性,平台无关性
具有可重用性和跨平台性的javaBeans和Ejb组件,为JSP程序的开发提供方便,我们可以将复杂的处理程序放到这些组件中,这样我们通过多次使用这些组件,极大地减少了在JSP页面中重写重复的代码,提高了效率,增强了代码的重用性。
### 3.降低耦合度,增加源程序代码的安全性
使用JSP技术,web页面开发人员可以使用HTML和xml标识来设计和格式化最终页面,使用JSP脚本或者标识来生成页面上的动态内容,生成动态内容的语句一般被封装在JavaBean、ejb或者JSP脚本段中,这样页面的设计人员和页面的编程人员的工作可以同步进行。并且我们在客户端通过查看源文件,看不到JSP标识的语句,也看不到在组件中封装好的代码,这样就达到了类似三层的解耦作用,有效保护了源代码。
§ JSP和servlet的结合使用
由于我们使用servlet处理大量的HTML文本(如拼接表格的HTML语句)时,不仅仅任务量较大,而且不利于后期的维护和扩展,所以我们处理前端界面效果时采用的JSP技术,而对于程序的逻辑控制则使用servlet技术。
![](https://box.kancloud.cn/2016-03-10_56e132d7b0cbb.jpg)
§ JSP和servlet的区别
JSP技术是servlet技术的发展,所以本质上就是servlet的简易方式。而两者最大的不同点在于servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离出来。而JSP的情况是将Java和HTML组合成一个扩展名为.JSP的文件。所以在实际应用中,我们采用JSP来生成动态的网页页面,采用servlet来控制业务流程也就是所谓的业务逻辑。所以JSP侧重于视图,而servlet注重对逻辑的控制。
因此,在web建设中到底使用哪种技术周密详细的事前规划,而网站建设又不光是技术的问题,所以我们在学习和对比JSP和servlet的同事更应该注意从中汲取思想的精华,因为技术会过时,而思想却受用一生。
![](https://box.kancloud.cn/2016-03-10_56e132d7dd3b2.jpg)