2 动态网页设计技术Word下载.docx

上传人:b****1 文档编号:226338 上传时间:2023-04-28 格式:DOCX 页数:31 大小:43.17KB
下载 相关 举报
2 动态网页设计技术Word下载.docx_第1页
第1页 / 共31页
2 动态网页设计技术Word下载.docx_第2页
第2页 / 共31页
2 动态网页设计技术Word下载.docx_第3页
第3页 / 共31页
2 动态网页设计技术Word下载.docx_第4页
第4页 / 共31页
2 动态网页设计技术Word下载.docx_第5页
第5页 / 共31页
2 动态网页设计技术Word下载.docx_第6页
第6页 / 共31页
2 动态网页设计技术Word下载.docx_第7页
第7页 / 共31页
2 动态网页设计技术Word下载.docx_第8页
第8页 / 共31页
2 动态网页设计技术Word下载.docx_第9页
第9页 / 共31页
2 动态网页设计技术Word下载.docx_第10页
第10页 / 共31页
2 动态网页设计技术Word下载.docx_第11页
第11页 / 共31页
2 动态网页设计技术Word下载.docx_第12页
第12页 / 共31页
2 动态网页设计技术Word下载.docx_第13页
第13页 / 共31页
2 动态网页设计技术Word下载.docx_第14页
第14页 / 共31页
2 动态网页设计技术Word下载.docx_第15页
第15页 / 共31页
2 动态网页设计技术Word下载.docx_第16页
第16页 / 共31页
2 动态网页设计技术Word下载.docx_第17页
第17页 / 共31页
2 动态网页设计技术Word下载.docx_第18页
第18页 / 共31页
2 动态网页设计技术Word下载.docx_第19页
第19页 / 共31页
2 动态网页设计技术Word下载.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

2 动态网页设计技术Word下载.docx

《2 动态网页设计技术Word下载.docx》由会员分享,可在线阅读,更多相关《2 动态网页设计技术Word下载.docx(31页珍藏版)》请在冰点文库上搜索。

2 动态网页设计技术Word下载.docx

AttachedGETdata:

"

+queryData);

%>

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

%if(Math.random()<

0.5){%>

Havea<

B>

nice<

/B>

day!

%}else{%>

lousy<

%=%>

2.2.3JSP的声明

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

%!

Java代码%>

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

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

privateintaccessCount=0;

%>

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

%=++accessCount%>

2.2.4page指令

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

page指令的形式为:

%@page

[language="

java"

]

[extends="

package.class"

[import="

{package.class|.*},..."

[session="

true|false"

[buffer="

none|8kb|sizekb"

[autoFlush="

[isThreadSafe="

[info="

text"

[errorPage="

relativeURL"

[contentType="

mimeType[;

charset=characterSet]"

|"

text/html;

charset=ISO-8859-1"

[isErrorPage="

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实例并行处理,在这种情况下,编程人员同步访问多个实例变量。

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.2.5include指令

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

include指令的形式如下:

%@includefile=”URL”%>

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

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

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

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

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

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

请看下列代码:

HTML>

HEAD>

TITLE>

JSP教程<

/TITLE>

/HEAD>

BODY>

%@includefile="

/navbar.html"

!

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

/BODY>

/HTML>

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

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

jsp:

include>

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

2.2.6JSP的注释

JSP注释的形式为:

%--注释--%>

或<

%/**注释...**/%>

JSP注释和字符引用约定

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

%--comment--%>

JSP注释,也称为“隐藏注释”。

JSP引擎将忽略它。

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

--comment-->

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

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

\%在模板文本(静态HTML)中实际上希望出现“<

%”的地方使用。

%\>

在脚本元素内实际上希望出现“%>

”的地方使用。

\'

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

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

\"

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

参见“\'

”的说明。

脚本和指令应用举例

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

DOCTYPEHTMLPUBLIC"

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

>

JavaServerPages<

BODYBGCOLOR="

#FDF5E6"

TEXT="

#000000"

LINK="

#0000EE"

VLINK="

#551A8B"

ALINK="

#FF0000"

CENTER>

TABLEBORDER=5BGCOLOR="

#EF8429"

TR>

THCLASS="

TITLE"

JSP应用实例<

/TABLE>

/CENTER>

P>

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

UL>

LI>

表达式.<

BR>

你的主机名:

.

JSPScriptlet.<

%out.println("

查询字符串:

+

request.getQueryString());

声明(和表达式).<

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

指令(和表达式).<

%@pageimport="

当前日期:

%=newDate()%>

/UL>

2.3JSP内建对象

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

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

预定义对象

类型

描述

存活范围

request

javax.servlet.ServletRequest

javax.servlet.HttpServletRequest

触发服务的请求

response

javax.servlet.ServletResponse

javax.servlet.HttpServletResponse

对请求的响应

page

pageContext

javax.servlet.jsp.PageContext

JSP页面的页面上下文

session

javax.servlet.http.HttpSession

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

application

javax.servlet.ServletContext

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

Context()获得。

out

javax.servlet.jsp.JspWriter

写入输出流的对象

config

javax.servlet.ServletConfig

当前页面的ServletConfig

java.lang.Object

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

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

exception

java.lang.Throwable

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

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

2.3.1request对象

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

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

返回值

方法

String

getParameter(Stringname)

以字符串类型返回请求参数的值;

如果参数不存在返回null。

参数类

java.util.Enumeration

getParameterNames()

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

Object

getAttribute(Stringname)

以对象类型返回命名属性的值;

如果命名属性不存在返回null。

属性类

void

setAttribute(Stringname,Objectobject)

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

getAttributeNames()

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

removeAttribute(Stringname)

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

getCharacterEncoding()

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

字符集类

setCharacterEncoding(StringcharSet)

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

getRemoteAddr()

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

客户主机

getRemoteHost()

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

Cookie[]

getCookies()

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

getHeader(Stringname)

略。

Http头

getHeaderNames()

HttpSession

getSession()

返回与本请求相关联的当前会话;

如果不存在,则创建一个新的会话。

会话类

2.3.2response对象

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

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

addCookie(Cookiecookie)

向响应添加特定的Cookie。

addHeader(Stringname,Stringvalue)

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

vodi

sendError(intsc)

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

sendError(intsc,java.lang.Stringmsg)

setStatus(intsc)

设置相应的状态码。

2.3.3out对象

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()等方法。

2.3.4session对象

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

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

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

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

Returnstheobjectboundwiththespecifiednameinthissession,ornullifnoobjectisboundunderthename.

ReturnsanEnumerationofStringobjectscontainingthenamesofalltheobjectsboundtothissession.

removeAttribute(Stringname)

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

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

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

getId()

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

invalidate()

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

int

getMaxInactiveInterval()

Returnsthemaximumtimeinterval,inseconds,thattheservletcontainerwillkeepthissessionopenbetweenclientaccesses.

setMaxInactiveInterval(intinterval)

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

为说明session对象的具体应用,接下来我们用三个页面模拟一个多页面的Web应用。

第一个页面(q1.html)仅包含一个要求输入用户名字的HTML表单,代码如下:

 <

HTML>

BODY>

FORMMETHOD=POSTACTION="

q2.jsp"

 请输入您的姓名:

INPUTTYPE=TEXTNAME="

thename"

INPUTTYPE=SUBMITVALUE="

SUBMIT"

/FORM>

/BODY>

/HTML>

  第二个页面是一个JSP页面(q2.jsp),它通过request对象提取q1.html表单中的thename值,将它存储为name变量,然后将这个name值保存到session对象中。

session对象是一个名字/值对的集合,在这里,名字/值对中的名字为"

thename"

,值即为name变量的值。

由于session对象在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。

q2.jsp的另外一个任务是询问第二个问题。

下面是它的代码:

%@pagelanguage="

%!

Stringname="

"

;

%

 name=request.getParameter("

);

 session.putValue("

name);

 %>

 您的姓名是:

%=name%>

p>

q3.jsp"

 您喜欢吃什么?

food"

P>

  第三个页面也是一个JSP页面(q3.jsp),主要任务是显示问答结果。

它从session对象提取thename的值并显示它,以此证明虽然该值在第一个页面输入,但通过session对象得以保留。

q3.jsp的另外一个任务是提取在第二个页面中的用户输入并显示它:

Stringfood="

 food=request.getParameter("

 Stringname=(String)session.getValue("

 您喜欢吃:

%=food%>

2.3.5application对象

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

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

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

Returnstheservletcontai

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

当前位置:首页 > 自然科学 > 物理

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

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