欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP网页编程初解(一)

程序员文章站 2022-05-13 17:32:30
JSP网页编程初解          JSP是当今Web开发中最重要的部分之一,它是直接和客户界面的部分。...

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指令,就可以直接将其加载到目标页面,这样就大大节省了时间。