JSP入门:什么是jsp?

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。


简单地说,jsp就是可能包含了java程序段的html文件,为了和普通的html区别,因此使用jsp后缀名。很多jsp教程的开篇总是喜欢拿jsp和asp比较,可是很多jsp的初学者根本不知道什么是asp,有意思么?


下面这个图是普通的HTML请求流程:


普通的HTML请求流程


因为JSP包含了java程序代码段,因此JSP在web server里面就要有个更多的处理步骤。如下图所示:


JSP在web server里面就要有个更多的处理步骤



你会发现,这里多了一个JSP Container的东西,然后多了一个转换到 名叫xxxServlet的java文件并编译成class类文件的过程。这里就展示出了java服务器的核心部分——Servlet。


JSP入门:什么是Servlet?


Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。 它担当Web浏览器或其他HTTP客户程序发出请求,与HTTP服务器上的数据库或应用程序之间的中间层。


Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。


在通信量大的服务器上,Java servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而创建单独的程序,这意味着各个请求的系统开销比较小。


简单地说,servlet就是在服务器端被执行的java程序,它可以处理用户的请求,并对这些请求做出响应。Servlet编程是纯粹的java编程,而jsp则是html和java编程的中庸形式,它更有助于美工人员来设计界面。正是如此,所有的jsp文件都将被最终转换成java servlet来执行。


从jsp到java到class,jsp在首次被请求时是要花费一定的服务器资源的。但庆幸的是,这种情况只发生一次,一旦这个jsp文件被翻译并编译成对应的servlet,在下次请求来临时,将直接由servlet来处理,除非这个jsp已经被修改。


从上面两幅图的比较也可以看出,作为jsp服务器,要比普通的web服务器多出一个JSP Container的东西,用来负责jsp的解释执行。对于初学者来说,Tomcat将是一个这种应用服务器的非常好的选择。http://tomcat.apache.org/ 上面列出了最新的tomcat下载。这里推荐解压运行版本,而非安装版本。其实解压运行版本并不比安装版复杂多少,一个JAVA_HOME的环境变量,就足够了。