JSP网页编程初解(一)
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,下载网址为:https://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]
<html>
<head>
<meta http-equlv=”Content-Type” content=”text/html;charset=GBK”>
<title>一个简单的JSP例子</title>
</head>
<body>
这是一个JSP的例子
</body>
</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指令,这些知识将会在后面的章节中进行详细介绍。
[html]
<%@page contentType="text/html"pageEncoding="UTF-8"%>
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>XXXXXXXXX</title>
</head>
<body>
<h1>这是一个JSP和HTML</h1>
</body>
</html>
<%@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代码 %>
以下代码在客户端输出一些内容:
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<%! int a=100; %>
<html>
<head>
<metahttp-equivmetahttp-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>
<%@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表达式使用的标记对是<%=...%>,其所得的结果被转化为字符串并显示在页面上。例如这段代码就实现了简单的剑法运算:
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<title>XXXXXXXXX</title>
</head>
<body>
<h3>运算:5-2 =<%=(5-2)%></h3>
</body>
</html>
<%@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指令的语法如下:
[html]
<%@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"
%>
<%@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指令的这些属性后,下面给出一段使用页面指令的代码以加深理解:
[html]
<%@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>
<%@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指令:
[html]
<%@ 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>
<%@ 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指令,就可以直接将其加载到目标页面,这样就大大节省了时间。