JSP网页编程初解
JSP是当今Web开发中最重要的部分之一,它是直接和客户界面的部分。对于商业软件来说,JSP显得尤其重要。
1、JSP简介
JSP是JavaServer Pages的缩写,是右Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在HTML文件中加入Java程序代码就构成了JSP网页。Web服务器在遇到访问JSP网页的请求时,首先执行其中的Java程序代码,然后将执行结果以HTML姓氏返回给客户。Java程序运行在服务器端,客户端只用于显示。
1)、主流Web技术介绍
JSP技术并不是唯一的动态网页技术,在JSP技术出现之前就有几种比较好用的动态网页技术,这些技术主要有一下几种。
>CGI:英文全称Common GatewayInterface,通常翻译为通用网关接口。是HTTP服务器与机器上的其他程序进行通信的一个接口。它的出现使网页从静态变成了动态。但是因为要生成一个动态网页,当HTTP服务器收到对CGI程序的请求时,每一个请求都将启动一个新的进程。当有大量用户请求调用CGI应用程序时,多个CGI应用程序的执行将导致服务器的大量负载,会严重影响服务器系统性能。
>ASP:英文全称Active ServerPage,它是Microsoft公司开发的一种处理动态页面的技术,同时它可以在HTML中内嵌一些脚本语言,如JavaScript。它将Web上的请求转入到服务器中,在服务器中对所有的ASP脚本语言进行解释执行。ASP是一种比较好用的技术,但它的缺点是只能在微软公司的Windows NT平台中支持IIS服务器。
>PHP:英文全称Personal HomePage,PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C、Java和Perl语言的语法,并耦合PHP自己的特性,使Web开发者能够快速地写出动态页面。它支持目前绝大多数数据库。还有PHP是完全免费的,可以自由下载。而且用户可以不受限制地获得源码,甚至可以加入自己需要的特色。对于小项目,它是一个之分适合的编程语言。但是对于较大的和更为复杂的项目,PHP就显得薄弱了。
>JSP:英文全称Java Server Pages。JSP与上面几种技术相比,主要具有如下优点:
>>运行速度快:仅在第一次请求时进行编译、加载;
>>内容的生成和显示是分离的;
>>平台无关性:基本上可以在所有平台上的任意环境中开发;
>>具有Java的所有的强大功能;
>>将内容的产生和显示进行分离;
>>用标识简化页面开发;
>>强调可重用的群组件。
2)、JSP的运行环境介绍
从最开始的JSWDK到现在的Tomcat、WebLogic等,JSP的运行环境在逐渐改变,出现了很多优秀的JSP容器。常用的JSP容器有Tomcat、WebLogic、WebSphere
3)、安装和启动JSP运行环境
在安装JSP运行环境之前,首先要安装JDK,这个太简单不叨叨了。接下来要安装Tomcat,下载网址为:http://tomcat.apache.org/。下载完毕按照默认设置进行安装即可。在系统环境变量中新建一个名为TOMCAT_HOME的系统变量,将其值设置为Tomcat安装的目录即可(我的是D:\Apache Software Foundation\Tomcat7.0_SingerFive)。
2、JSP程序演示
下面就从最简单的入门开始介绍,先体验一下JSP,了解什么是JSP,开始的时候可能会认为很简单,但随着学习的不断深入,你会越来越感觉到JSP的强大。
1)、体验JSP
下面编写一个简单的JSP程序,它的内容和HTML文件是一样的,唯一的区别的是他的文件名后缀是.jsp,而不是.html。
<html> <head> <meta http-equlv=”Content-Type” content=”text/html;charset=GBK”> <title>一个简单的JSP例子</title> </head> <body> 这是一个JSP的例子 </body> </html>
如果将上述代码存为.html,则可以直接使用浏览器打开该文件,否则以.jsp为后缀则不可以直接双击该文件来查看实际的运行效果,而需要把它部署到JSP容器中(Tomcat),使用JSP容器解析后才能查看。
2)、JSP与HTML的初步结合
下面是一个简单的JSP与HTML结合的程序,这个程序中用到了JSP脚本标签指令中的pages指令,这些知识将会在后面的章节中进行详细介绍。
<%@page contentType="text/html"pageEncoding="UTF-8"%> <html> <head> <metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/> <title>XXXXXXXXX</title> </head> <body> <h1>这是一个JSP和HTML</h1> </body> </html>
把此jsp文件复制到Tomcat地址下的jspexample下(我的是D:\Apache Software Foundation\Tomcat7.0_SingerFive\webapps\examples\jsp\ jspTest.jsp),在浏览器中输入地址即可打开查看。
在第一行中运用了page指令。当浏览器第一次请求JSP页面时,容器首先会将该JSP文件编译为Servlet类文件,然后容器将这个类加载到容器的虚拟机(Java Virtual Machine)中并运行这个Servlet类,最后将结果送到客户端。
3、JSP的基本语法
JSP网页本身是由特定JSP元素内嵌在HTML网页中形成的。除了HTML变迁外,JSP提供了5中构建网页内容时所需要的元素。
>指令(directive)
>声明(declaration)
>程序代码(scriptlet)
>表达式(expression)
>注释(comments)
JSP指令用于设置和整个JSP页面相关的属性,如页面的脚本语言、需要导入的Java包名以及页面编码的字符集等。JSP的语法如下:
<%@ 指令名属性=”值”%>
JSP指令包括page、include和taglib3种指令。以后将会对JSP指令进行详细介绍。
JSP声明用于声明该页面的属性和方法,声明后的属性和方法适用于JSP中的任何部分,相当于类中的成员方法和成员变量。其JSP语法如下:
<%! 声明部分 %>
在下面的代码中分别声明了一个变量和一个方法:
<%!
int i = 1;
%>
<%!
void method{}
%>
JSP程序代码时JSP中最常见的脚本元素,其实质是一段有效的Java语言代码。JSP程序代码包括在<%....%>之间。其JSP语法如下:
<% Java代码 %>
以下代码在客户端输出一些内容:
<%@pagecontentType="text/html" pageEncoding="UTF-8"%> <%! int a=100; %> <html> <head> <metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/> <title>XXXXXXXXX</title> </head> <body> <h3>输出从100到200之间的数</h3> <% for(int i = 0 ; i < 100 ; i++){ out.println(i+a +"<br>"); } %> </body> </html>
JSP表达式使用的标记对是<%=...%>,其所得的结果被转化为字符串并显示在页面上。例如这段代码就实现了简单的剑法运算:
<%@pagecontentType="text/html" pageEncoding="UTF-8"%> <html> <head> <title>XXXXXXXXX</title> </head> <body> <h3>运算:5-2 =<%=(5-2)%></h3> </body> </html>
JSP注释用来对程序代码进行解释和说明,常见的注释包括显示注释和隐式注释两种。显示注释主要是指HTML文件的注释,当请求包含显示注释的JSP页面时,可以通过源代码查看注释。其语法如下:
<!—注释内容 -->
例如: <body>
<h3>这是一个使用了显示注释的页面</h3>
<!--在这里注释说明-->
</body>
显示注释在通过浏览器查看源文件(HTML)时会看到,而隐式注释是指包含在<%--...--%>之间的内容,隐式注释在JSP页面上时无法看到的,而且在HTML源文件中也是看不到的,其语法如下:
<%-- 注释内容 --%>
· 下面的代码中使用了隐式注释,读者可以通过这两个例子的对比进一步理解这两种注释的区别:
<body>
<h3>这是一个使用了显示注释的页面</h3>
<%-- 在这里注释说明 --%>
</body>
4、JSP指令
JSP指令用于设置和整个JSP页面相关的属性。JSP指令包括page、include和taglib3中指令。下面将对page指令和include指令元素进行详细介绍。
1)、page指令
Page指令用来定义页面的很多属性,如脚本语言、编码方式、导入的java包等。Page指令的语法如下:
<%@page language="java" session="true/false" pageEncoding="characterSet" isThreadSafe="true/false" isErrorPage="true/false" info="text" import="package.class/package.*,...." extends="package.class" errorPage="relativeURL" contentType="TYPE,charset=CHARSET" buffer="none/8kb/sizekb" autoFlush="true/false" %>
这些属性的说明下表所示:
属性名 |
说明 |
举例 |
Language |
指定JSP页面使用的脚本语言,目前只能使用Java |
<%@page langage=”java”%> |
Session |
指定JSP是否使用session |
<%@page session=”true”%> |
pageEncoding |
JSP页面本身的编码字符集 |
<%@page pageEncoding=”gb2312”%> |
isErrorPage |
指定该JSP文件是否显示错误页面 |
<%@page isErrorPage=”true”%> |
isThreadSafe |
指定JSP文件是否能够使用多线程 |
<%@page isThreadSafe=”true”%> |
Info |
设置JSP页面的信息 |
<%@page info=”字符串”%> |
Import |
指定引入的Java包 |
<%@page import=”java.util”%> |
ErrorPage |
指定出现异常时调用的页面 |
<%@page errorPage=”erroe=r.jsp”%> |
contentType |
指定JSP页面的文件格式与服务器发送给客户端时的内容编码字符集 |
<%@page contentType=”text/html;charset=GBK”%> |
Buffer |
指定JSP网页的缓冲区大小 |
<%@page buffer=”32kb”%> |
autoFlush |
值为true,将数据输出到客户端 值为false,出现异常 |
<%@page autoFlush=”true”%> |
在了解page指令的这些属性后,下面给出一段使用页面指令的代码以加深理解:
<%@page contentType="text/html ;charset=GBK" pageEncoding="UTF-8" import="java.util.*" session="true" buffer="32kb" %> <html> <head> <title>JSP的页面指令</title> </head> <body> <h3>这是一个有多个页面指令的网页</h3> </body> </html>
2)、include指令
用来将文件插入到JSP网页上,这些文件可以是文本文件、HTML文件或者JSP文件。该指令的语法如下,file是指所要加载的文件路径。
<%@ include file=”文件的相对路径”%>
下面的程序讲解了如何使用include指令:
<%@ pagelanguage="java" import="java.util.*"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> <%@includefile="test.html"%> <html> <head> <title>test include</title> </head> <body> <h3>这是一个测试include指令的页面</h3> </body> </html>
一般需要将经常使用的代码写在个别文件中,如果没有include指令,那么久必须在每个文件中写入相同的代码,这样就会造成时间的浪费和效率的低下。有了include指令,就可以直接将其加载到目标页面,这样就大大节省了时间。