什么是JSP?
JSP可用一种简单易懂的等式表示为:HTML+Java=JSP
关于JSP
百度词条:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。JSP和 Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java 2 platform Enterprise Edition)应用体系中的一部分。Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process),而Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(Parent Thread)来实现资源共享,这样就减轻了服务器的负担,所以,Java Servlet可以用来做大规模的应用服务。
JSP技术的优点
1.一次编写,到处运行。
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大特点——平台无关性,也就是所谓的“一次编写,随处运行(WORA wirte Once,RunAnywhere)”,
2.JSP/Servlet的效率以及安全性也是相当惊人的
3. 系统的多平台支持。
基本上可以在所有平台上的任意环境中开发, 在任意环境中进行系统部署,在任意的环境中扩展。相比ASP/PHP的局限性是显而易见的。
4. 强大的可伸缩性。
从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示一个巨大的生命力。
5.多样化的功能强大的开发工具支持
这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到, 并且其中许多已经可以顺利的运行于多种平台之下。
JSP的弱势
1.与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
2. Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。
3.在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数,而是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错),逐步缩小出错代码段的范围,最终确定错误代码的位置。
较JSP而言,Servlet有什么优点,有什么缺点。
关于Servlet
百度词条:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
Servlet的优点
1.方便
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据,读取和设置HTTP头,处理cookie,跟踪回话状态等。
2.功能强大
在Servlet中,许多使用传统CGT程序很难完成的任务都可以轻松完成。例如,Servlet能够直接和Web服务器交互,而普通的CGT程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
3.可移植性好
Servlet用Java编写,Servlet API工具有完善的标准。因此,为Planet Enterprise Server写的S而vlet无需任何实质上的改动既可移植到Apache,Microsoft IIS或者WebStar。几乎所有的主流服务器都直接通过插件支持Servlet。
4.节省投资
不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)
Servlet的缺点
1.Servlet没有图形化界面,运行在服务器端
2.Servlet是一个早期的不完善的产品,写business layer很好,写preseentation layer就很臭,并且两层混杂。