1 JSP概述
JSP(Java Server Page)是Servelt的扩展,与Servlet一样,JSP是一种基于Java的服务器端技术,其目的是简化建立和管理动态网站的工作,在传统的HTML文件中插入Java程序片段和JSP标签,就构成了JSP页面(Java代码位于<%java代码%>中)。
● 与Servlet相比:Jsp对Servlet做出了很大的改变,Jsp允许使用HTML和JavaScript输出,不需要Servlet中大量的输出流来输出(如:out.print(),out.write())。
● 与HTML相比:HTML网页里的内容是静态的,而JSP网页里的内容可以是动态的:
(1)静态网页:网页中的内容是固定的,不会更新(如:HTML,CSS)。
(2)动态(能与用户进行交互)网页:内容是可变化,要由程序的运行结果来决定。
2 理解Jsp程序的执行
Jsp和HTML本质的区别(可以把JSP页面看成是加强版的HTML主要是从表现形式上说的):
● HTML是静态网页这些网页被存放在web服务器的web容器中。当通过HTTP协议访问时,Web服务器只是简单的把网页发送给浏览器进行显示(浏览器端能解释HTML代码)。
● 访问JSP网页时,Web服务器把该请求转发给后端的JSP容器,JSP容器把该JSP编译成Servlet,然后转发到Servlet容器,并运行这个Servlet,产生的输出形成一个网页,再由Web容器发回给浏览器显示(这个过程发生在首次访问JSP时,编译成功后就是一个Servlet对外提供的服务。当在次访问这个JSP时,不在重新编译直接由Servlet响应)。
3 JSP执行原理
同Servelt一样,JSP运行在Servlet/JSP容器(如:Tomact)中,其运行过程如下:
(1)客户端发出请求(request)。
(2)容器接收到请求后检索对应的JSP页面,如果该JSP页面是第一次被请求,则容器将其翻译成一个Java文件,即Servlet。
(3)容器将翻译后的Servlet源代码编译形成字节码,即.class文件,并加载到内存执行。
(4)最后把执行结果即响应(response)发送回客户端。
当这个JSP页面再次被请求时,只要该JSP文件没有发生过改动,JSP容器就直接调用已经装载的字节码文件,而不会再执行翻译和编译步骤,这样大大提高了服务器的性能。
4 JSP基本结构
JSP文件由6类基本元素组成:
- JSP指令
- JSP声明
- JSP表达式
- JSP脚本
- JSP动作
- JSP注释
4.1 JSP指令
JSP指令用来向JSP容器提供编译信息。指令并不向客户端产生任何输出,所有的指令只在当前页面中有效。
JSP指令的语法格式如下:
<%@ 指令名 属性=“值” 属性=“值”%>
常用的三种指令为:
- page指令:用于设置页面的各种属性,如导入包、指明输出内容类型、控制Session等。page指令一般位于JSP页面的开头部分,一个JSP页面可包含多条page指令。
- include指令:include指令用于在当前JSP中包含其他文件,被包含的文件可以JSP、HTML或文本文件。包含的过程发生在将JSP翻译成Servlet时,当前JSP和被包含的JSP会融合到一起,形成一个Servlet,然后进行编译运行。
- taglib指令:taglib指令用于指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签。
4.2 JSP声明
JSP声明用于在JSP页面中定义变量和方法。JSP声明通过“<%! %>”定义。一个JSP页面可以有多个声明,并且每个声明中可以同时定义多个变量或方法,其中,每个JSP声明只在当前JSP页面中有效。
JSP 声明的语法格式如下:
<%! 声明的内容%>
4.3 JSP表达式
JSP表达式用于将Java表达式的运行结果输出在页面中。JSP表达式通过“<%= %>” 定义。在JSP表达式中可以包含任何一个有效的Java表达式。当请求JSP页面时,表达式会被运行并将结果转化成字符串插入到该表达式所在的位置上。
JSP表达式格式如下:
<%= 表达式%>
4.4 JSP脚本
JSP脚本用于在JSP页面中插入Java代码,JSP脚本通过“<% %>”定义,其中可以包含任何符合Java语法的代码,但由于JSP脚本最终会被翻译成Servlet方法中的代码,而且Java语法不允许在方法里定义方法,所以不能再JSP脚本里定义方法。JSP脚本在服务器端执行,当JSP页面被请求时,页面上的JSP脚本会从上到下一次执行。
JSP脚本的语法格式如下:
<%java代码%>
4.5 JSP动作标签
JSP中可以使用内置的动作标签实现一些常见的特定功能,其语法格式如下:
<jsp:动作名></jsp:动作名>
4.6 注释
在JSP页面中可以使用“<%– –%>”的方式来注释。服务器编译JSP时会忽略“<%–“和“–%>”之间的内容,所以生成的注释在客户端是看不到的。
JSP注释的语法格式如下:
<%--注释内容--%>
在JSP页面中也可以使用HTML的注释,即“ ”的方式,来对HTML标签进行注释,这种方式的注释在客户端可以查看到。