电子商务网站设计原理.docx

上传人:b****0 文档编号:9245426 上传时间:2023-05-17 格式:DOCX 页数:36 大小:48.30KB
下载 相关 举报
电子商务网站设计原理.docx_第1页
第1页 / 共36页
电子商务网站设计原理.docx_第2页
第2页 / 共36页
电子商务网站设计原理.docx_第3页
第3页 / 共36页
电子商务网站设计原理.docx_第4页
第4页 / 共36页
电子商务网站设计原理.docx_第5页
第5页 / 共36页
电子商务网站设计原理.docx_第6页
第6页 / 共36页
电子商务网站设计原理.docx_第7页
第7页 / 共36页
电子商务网站设计原理.docx_第8页
第8页 / 共36页
电子商务网站设计原理.docx_第9页
第9页 / 共36页
电子商务网站设计原理.docx_第10页
第10页 / 共36页
电子商务网站设计原理.docx_第11页
第11页 / 共36页
电子商务网站设计原理.docx_第12页
第12页 / 共36页
电子商务网站设计原理.docx_第13页
第13页 / 共36页
电子商务网站设计原理.docx_第14页
第14页 / 共36页
电子商务网站设计原理.docx_第15页
第15页 / 共36页
电子商务网站设计原理.docx_第16页
第16页 / 共36页
电子商务网站设计原理.docx_第17页
第17页 / 共36页
电子商务网站设计原理.docx_第18页
第18页 / 共36页
电子商务网站设计原理.docx_第19页
第19页 / 共36页
电子商务网站设计原理.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子商务网站设计原理.docx

《电子商务网站设计原理.docx》由会员分享,可在线阅读,更多相关《电子商务网站设计原理.docx(36页珍藏版)》请在冰点文库上搜索。

电子商务网站设计原理.docx

电子商务网站设计原理

 

电子商务网站设计原理

补充材料

 

电子商务系课程小组

 

武汉理工大学

武汉WUHAN

 

前言

为了配合《电子商务网站设计原理》课程的教学,体现教材的编写特色,更好地为读者服务,编写了此教学资料。

教学资料内容有三个部分:

限于编著者水平,教学资料中有错误或不妥之处,请读者给予批评指正。

 

编者

2008年8月

1JSP概述

1.1JSP概述

JSP又称JavaServerPages,是java平台下用于构建包含动态网内容(比如HTML、DHTML、XHTML和XML)的技术。

一个JSP页面是一个基于文本的文档,它可以用来描述如何处理客户端的请求,如何为客户端创建一个响应。

在JSP页面中除了可以包含文本、HTML标记等外,还可以包含JSP的自身的几种元素:

指令、脚本元素和动作。

1.2访问机理

静态页面文件的访问机理图:

2

1

动态页面文件的访问机理图:

4将接收到的结果返回给客户端

3执行结果返回给Web服务器

2转发给JSP容器

1请求的是*.jsp文件

2JSP的指令

JSP有三类指令:

page指令、include指令和taglib指令,它们的常用形式如下:

<%@指令名属性1=”属性值1”属性2=”属性值2”……%>

JSP脚本中引号是在半角状态下输入。

2.1page指令

page指令定义了一系列页面依赖属性,并能将这些属性传递给JSP容器。

page指令的形式为:

<%@page

[language="java"]

[extends="package.class"]

[import="{package.class|.*},..."]

[session="true|false"]

[buffer="none|8kb|sizekb"]

[autoFlush="true|false"]

[isThreadSafe="true|false"]

[info="text"]

[errorPage="relativeURL"]

[contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]

[isErrorPage="true|false"]

%>

page指令的属性解释如下:

(1)language

定义了在jsp使用的脚本语言,目前java是缺省又是唯一合法的选择。

language=”java”

(2)extends

extends=”package.class”。

这将为servlet产生一个超类。

请特别谨慎的使用这一功能,因为,服务器也许已经定义了一个。

(3)import

import=”package.class”或import=”package.class1,..,package.classN”。

通过该属性你可以导出在jsp文件中要使用到的类(在java中完成某种功能的类文件)。

举例:

<%@pageimport="java.util.*"%>

import属性是这几个属性中唯一一个可以在一个JSP中出现多次的。

(4)session

session=”true|false”。

如果值为“true”(缺省)表示:

预定义变量session(继承HttpSession)应该绑定到一个已存在的session,否则就应该创建一个并将之绑定。

值为“false”时表示:

将不使用session变量,如果试图使用,将在JSP向servlet转化时出现错误。

(5)buffer

buffer=”sizekb|none”。

为JspWriter输出确定缓冲的大小。

缺省由服务器而定,但至少要有8kb。

(6)autoflush

autoflush=”true|false”。

如果值为”true”(缺省)表示:

当缓冲满时将自动清空,值为”false“时表示:

当缓冲满时递出一个异常,这很少使用。

当buffer=”none”是若”false”值是不合法的。

(7)isThreadSafe

isThreadSafe=”true|false”.如果值为“true”(缺省)表示:

将进行普通的servlet处理,多个请求将被一个servlet实例并行处理,在这种情况下,编程人员同步访问多个实例变量。

值为“false”时表示:

servlet将实现单线程模式(SingleThreadModel),不管请求是顺序提交还是并发出现,都将提供不同的分离的servlet实例。

(8)info

info=”message”。

定义一个可以通过调用getServletInfo方法得到的串。

(9)isErrorPage

isErrorPage=”true|false”。

指定当前页面是否可以处理来自另一个页面的错误,缺省为“false”。

(10)errorPage

errorPage=”URL”。

指定一个JSP页面来处理任何一个可抛出的但当前页面并未处理的意外错误。

(11)contentType

contenType=”MIME-Type”或contentType=”MIME-Type;charset=Character-Set”.它指定输出的MIME类型。

缺省为“text/html”。

举例:

<%@pagecontentType="text/plain"%>

<%@pagecontentType=”text/html;charset=GB2312”%>

2.2include指令

include指令可以在jsp文件编译为servlet类文件时,将一个文件包含进来。

include指令的形式如下:

<%@includefile=”URL”%>

URL通常相对于指向它的JSP页面。

但是,普遍使用相对“URL”,可以使用一个斜杠“/”作为URL的开始来告知系统URL相对的Webserver的主路径。

被包含的文件将以规则的JSP形式来解析,因此,您可以在其中使用静态HTML,scriptingelements,directives,和actions。

让我们来看一个例子,许多站点在每一个页面上包含一个小型的导航条。

它通常出现在页面的顶部或左右侧,并包含在每一个页面里。

这用includedirective来实现是很自然的,若用规则的HTML来把这些语句拷到每一个页面无疑是个梦魇。

请看下列代码:

JSP教程

<%@includefile="/navbar.html"%>

—本页面的其他部分...-->

因为文件是在页面被转换时插入的,因此,如果导航条改变了,您需要将所有指向它的JSP页面全部重新编译一次。

如果您的导航条并不常改变这样做无疑是高效的,但是,如果您的被包含文件更改频繁,则建议您使用

include>动作(后面将谈到)来替代,它在页面被请求时才包含文件。

2.3taglib指令

有待进一步扩充。

3JSP的脚本元素

3.1JSP的声明

JSP声明用来定义JSP页面的脚本命令使用到的变量和方法,其语法如下:

<%!

Java代码%>

由于声明不会有任何输出,因此它们往往和JSP表达式或脚本命令结合在一起使用。

例如,下面的JSP代码片断输出自从服务器启动(或Servlet类被改动并重新装载以来)当前页面被请求的次数:

<%!

privateintaccessCount=0;%>

自从服务器启动以来页面访问次数为:

<%=++accessCount%>

3.2JSP的表达式

JSP表达式用来把Java数据直接输出页面。

其语法如下:

<%=Java表达式%>

计算Java表达式得到的结果,并将其转换成字符串,然后输出到页面。

计算在运行时进行(页面被请求时),因此可以访问和请求有关的全部信息。

例如,下面的代码显示页面被请求的日期/时间:

当前时间:

<%=newjava.util.Date()%>

或<%=(newjava.util.Date()).toLocaleString()%>

输出远程主机例子:

Yourhostname:

<%=request.getRemoteHost()%>

3.3JSP的脚本

如果你要完成的任务比插入简单的表达式更加复杂,可以使用JSP脚本。

JSP脚本允许你把任意的Java代码插入JSP页面中。

JSP脚本语法如下:

<%Java代码%>

和JSP表达式一样,脚本也可以访问所有预定义的变量。

例如,如果你要向结果页面输出内容,可以使用out变量:

<%

StringqueryData=request.getQueryString();

out.println("AttachedGETdata:

"+queryData);

%>

JSP脚本和HTML标记混合使用的例子:

<%if(Math.random()<0.5){%>

Haveaniceday!

<%}else{%>

Havealousyday!

<%=%>

3.4JSP的注释

JSP注释的形式为:

<%--注释--%>或<%/**注释...**/%>

JSP注释和字符引用约定

  下面是一些特殊的标记或字符,你可以利用它们插入注释或可能被视为具有特殊含义的字符。

语法用途

<%--comment--%>JSP注释,也称为“隐藏注释”。

JSP引擎将忽略它。

标记内的所有JSP脚本元素、指令和动作都将不起作用。

--comment-->HTML注释,也称为“输出的注释”,直接出现在结果HTML文档中。

标记内的所有JSP脚本元素、指令和动作正常执行。

<\%在模板文本(静态HTML)中实际上希望出现“<%”的地方使用。

%\>在脚本元素内实际上希望出现“%>”的地方使用。

\'使用单引号的属性内的单引号。

不过,你既可以使用单引号也可以使用双引号,而另外一种引号将具有普通含义。

\"使用双引号的属性内的双引号。

参见“\'”的说明。

3.5脚本和指令应用

  下面是一个使用JSP表达式、Scriptlet、声明、指令的简单例子。

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">

JavaServerPages

VLINK="#551A8B"ALINK="#FF0000">

JSP应用实例

下面是一些利用各种JSP功能生成的动态内容:

  • 表达式.

    你的主机名:

    <%=request.getRemoteHost()%>.

  • JSPScriptlet.

    <%out.println("查询字符串:

    "+

    request.getQueryString());%>

  • 声明(和表达式).

    <%!

    privateintaccessCount=0;%>

    服务器启动以来访问次数:

    <%=++accessCount%>

  • 指令(和表达式).

    <%@pageimport="java.util.*"%>

    当前日期:

    <%=newDate()%>

4JSP的预定义对象

为了简化JSP表达式和脚本的代码编写,JSP提供了一些预先定义对象,使用这些对象时可以不事先定义它们。

JSP页面中可以使用的预定义对象如下表所示:

预定义对象

类型

描述

存活范围

request

javax.servlet.ServletRequest

javax.servlet.HttpServletRequest

触发服务的请求

request

response

javax.servlet.ServletResponse

javax.servlet.HttpServletResponse

对请求的响应

page

pageContext

javax.servlet.jsp.PageContext

JSP页面的页面上下文

page

session

javax.servlet.http.HttpSession

为发出请求的客户端创建的会话对象,该对象仅对HTTP协议有效。

session

application

javax.servlet.ServletContext

从servlet配置对象中获取的servlet上下文,也可通过getServletConfig().get

Context()获得。

application

out

javax.servlet.jsp.JspWriter

写入输出流的对象

page

config

javax.servlet.ServletConfig

当前页面的ServletConfig

page

page

java.lang.Object

执行当前请求的页面实现类的实例。

page

另外,在出错处理页面中,你还可以访问预定义对象exception:

预定义对象

类型

描述

存活范围

exception

java.lang.Throwable

导致出错处理页面被唤醒的未捕获的Throwable。

page

下面逐一对上述预定义对象进行详细描述。

4.1request对象

通过request对象可以获得客户请求的参数、方法类型、HTTP头、客户端主机信息等。

下表列出request对象的部分方法。

 

返回值

方法

String

getParameter(Stringname)

以字符串类型返回请求参数的值;如果参数不存在返回null。

参数类

java.util.Enumeration

getParameterNames()

返回包含在请求中的所有参数名称的枚举型。

Object

getAttribute(Stringname)

以对象类型返回命名属性的值;如果命名属性不存在返回null。

属性类

void

setAttribute(Stringname,Objectobject)

在request对象中保存一个命名属性。

java.util.Enumeration

getAttributeNames()

返回包含在请求中的所有命名属性的名称的枚举型。

void

removeAttribute(Stringname)

删除request对象中的命名属性。

String

getCharacterEncoding()

获得request对象中字符编码的名称。

字符集类

void

setCharacterEncoding(StringcharSet)

设置request对象中字符编码的名称。

String

getRemoteAddr()

获得发送请求客户端主机的IP地址。

客户主机

String

getRemoteHost()

获得发送请求客户端主机的名称。

Cookie[]

getCookies()

以数组形式返回包含在客户机请求中的所有Cookie对象。

String

getHeader(Stringname)

略。

Http头

java.util.Enumeration

getHeaderNames()

略。

HttpSession

getSession()

返回与本请求相关联的当前会话;如果不存在,则创建一个新的会话。

会话类

举例:

4.2response对象

response对象是对客户请求的响应,一般由继承HttpServletResponse而来。

可以用来添加Cookie、设置HTTP状态码和response头等。

下表列出request对象的部分方法。

返回值

方法

void

addCookie(Cookiecookie)

向响应添加特定的Cookie。

void

addHeader(Stringname,Stringvalue)

添加一个含有名称和值的响应头部。

vodi

sendError(intsc)

使用特定的状态码向客户端发送一个错误响应,并清空缓冲。

void

sendError(intsc,java.lang.Stringmsg)

使用特定的状态码向客户端发送一个错误响应,并清空缓冲。

void

setStatus(intsc)

设置相应的状态码。

4.3pageContext对象

pageContext对象主要用来管理页面的属性。

4.4session对象

session对象是和请求关联的HttpSession对象。

前面我们已经介绍过会话的自动创建,我们知道,即使不存在session引用,这个对象也是自动绑定的。

但有一个例外,这就是如果你用page指令的session属性关闭了会话,此时对session变量的引用将导致JSP页面转换成Servlet时出错。

下表列出session对象的部分方法。

返回值

方法

Object

getAttribute(Stringname)

Returnstheobjectboundwiththespecifiednameinthissession,ornullifnoobjectisboundunderthename.

java.util.Enumeration

getAttributeNames()

ReturnsanEnumerationofStringobjectscontainingthenamesofalltheobjectsboundtothissession.

void

removeAttribute(Stringname)

从会话中删除绑定到指定名称的对象。

void

setAttribute(java.lang.Stringname,java.lang.Objectvalue)

根据制定的名称将对象绑定到会话中。

String

getId()

返回分配给会话的唯一标示符。

void

invalidate()

取消会话,并解除绑定到它上面的所有对象。

int

getMaxInactiveInterval()

Returnsthemaximumtimeinterval,inseconds,thattheservletcontainerwillkeepthissessionopenbetweenclientaccesses.

void

setMaxInactiveInterval(intinterval)

以秒为单位设置两个客户请求之间的最大时间间隔,超过该间隔将取消会话。

举例:

4.5application对象

application对象是一个ServletContext,也可以通过getServletConfig().getContext()获得。

可以在其中存放应用程序的初始化参数、全局性对象等。

下表列出application对象的部分方法。

返回值

方法

Object

getAttribute(Stringname)

Returnstheservletcontainerattributewiththegivenname,ornullifthereisnoattributebythatname.

java.util.Enumeration

getAttributeNames()

ReturnsanEnumerationcontainingtheattributenamesavailablewithinthisservletcontext.

void

removeAttribute(Stringname)

从servlet上下文(此处即application对象)中删除绑定到指定名称的对象。

void

setAttribute(java.lang.Stringname,java.lang.Objectvalue)

根据制定的名称将对象绑定到servlet上下文中。

Object

getInitParameter(java.lang.Stringname)

ReturnsaStringcontainingthevalueofthenamedcontext-wideinitializationparameter,ornulliftheparameterdoesnotexist.

java.util.Enumeration

getInitParameterNames()

Returnsthenamesofthecontext'sinitializationparametersasanEnumerationofStringobjects,oranemptyEnumerationifthecontexthasnoinitializationparameters.

RequestDispatcher

getRequestDispatcher(java.lang.Stringpath)

ReturnsaRequestDispatcherobjectthatactsasawrapperfortheresourcelocatedatthegivenpath.

举例:

4.6out对象

out对象是用来向客户端发送内容的PrintWriter。

然而,为了让response对象更为实用,out是带缓存功能的PrintWriter,即JspWriter。

JSP允许通过page指令的buffer属性调整缓存的大小,甚至允许关闭缓存。

out一般只在Scriptlet内使用,这是因为JSP表达式是自动发送到输出流的,很少需要显式地引用out。

out对象的方法有out.pringln(Objectobject)、out.fluse()、out.clear()、out.clearBuffer()、out.close()等方法。

4.7

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2