JSP学习笔记一

来源:互联网 发布:c语言小游戏 编辑:程序博客网 时间:2024/05/17 17:15

JSP学习笔记一

 

JSP主要有五类元素:注释,模板元素,脚步元素,指令元素,动作元素。

 

1.模板元素是指JSP的静态HTML或者XML内容。主要是网页的框架和结构。

 

2.注释有三类:HTML/XML注释,隐藏注释,Scriptlets中的JAVA注释。

 

语法:<!--comment[<%=expression %>]-->

 

      <%--comment -- %>

 

3.脚本元素主要包括声明(Declaration),表达式(Expression)Scriptlets

 

声明的语法格式:<%! Variable declaration

 

                    Menthod declaration(paramType param ……) %>

 

声明中一般把类中要使用的方法或常数封装起来,声明后的变量和方法可以在JSP的任意地方使用。

 

表达式的语法格式:<%=Some java expression %>

 

表达式在JSP请求处理阶段计算其值,所得结果转换成字符串与模板数据组合。

 

Scriptlets语法格式:<% java code statements %>

 

ScriptletsJSP中页面处理请求时执行的JAVA代码。

 

4.指令元素有三种页面指令,include指令,taglib指令。

 

页面指令的语法格式:

 

<% page [language=”java”] [import=”{package.class|package.*},…”] [contentType=”type;charset=charset”] [session=”true|false”] [buffer=”none|8kb|sizekb”] [autoFlush=”true|flase”] [isThreadSafe=”true|false”] [info=”text”] [errorPage=”relativeURL”] [isErrorPage=”true|false”] [extends=”package.class”] [isELIgnored=”true|false”] [pageEncoding=”peinfo”] %>

 

属性

 

 

描述

 

 

默认值

 

 

实例

 

 

language

 

 

定义要使用的语言

 

 

“java”

 

 

Language=”java”

 

 

import

 

 

引入类包

 

 

默认忽略

 

 

Import=”java.io.*,java.util.Hashtable”

 

 

Session

 

 

指定一个HTTP会话中这个页面是否参与

 

 

True

 

 

Session=”true”

 

 

Buffer

 

 

设定缓冲模式及缓冲数值

 

 

不小于8KB

 

 

Buffer=”64kb”

 

 

autoFlash

 

 

设置缓冲满时是否刷新

 

 

True

 

 

autoFlush=”true”

 

 

Info

 

 

设置JSP页面信息,可用servlet.getservletInfo()获得

 

 

默认忽略

 

 

Info=”测试页面“

 

 

isErrorPage

 

 

设置当前页是否是其它页的errorPage目标

 

 

False

 

 

isErrorPage=”false”

 

 

errorPage

 

 

定义此页面出现异常时调用的页面

 

 

默认忽略

 

 

errorPage=”erroe.jsp”

 

 

isThreadSage

 

 

设置JSP文件是否能多线程使用

 

 

True

 

 

isThreadSafe=”true”

 

 

contentType

 

 

定义JSP字符编码和页面响应的MIME类型

 

 

TYPE=text/html CHARSET=iso8859-1

 

 

contenType=”text/html charset=bg2312”

 

 

pageEncoding

 

 

JSP页面的字符编码

 

 

pageEncoding=iso8859-1

 

 

pageEncoding=”gb2312”

 

 

isELIgnored

 

 

制定EL是否忽略

 

 

默认值有web.xml设定

 

 

isELIgnored=”true”

 

 

Page指令定义的是JSP的全局属性,作用于真整个页面。

 

Include指令的语法格式:

 

<%@ include file="relativeURL" %>

 

<%@include %>指令将会在JSP编译时插入一个包含文本或代码的文件,当你使用<%@ include %>指命时,这个包含的过程就当是静态的。静态的包含就是指这个被包含的文件将会被插入到JSP文件中去,这个包含的文件可以是JSP文件,HTML文件,文本文件。

 

Taglib指令允许开发者自定义标签,增加代码的重用。

 

5.动作元素

 

<jsp:param>标签的语法格式:

 

<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+

 

jsp:param操作用来以“名—值”的形式为其它标签提供附加的信息(动态文件的参数)。

 

<jsp:include>标签的语法格式:

 

<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />

 

or

 

<jsp:include page="{relativeURL | <%= expression %>}" flush="true" >

 

<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+

 

</jsp:include>

 

jsp:include操作允许在请求时间内包含静态或动态的文件。被包含的对象只有对JspWriter对象的访问权,它不能设置头或Cookie。如果页面输出是缓冲的,缓冲区的刷新要优于包含的刷新。

 

<jsp:forward>标签的语法格式:

 

<jsp:forward page={"relativeURL" | "<%= expression %>"} />

 

or

 

<jsp:forward page={"relativeURL" | "<%= expression %>"} >

 

<jsp:param name="parameterName"value="{parameterValue | <%= expression %>}" />+

 

</jsp:forward>

 

jsp:forward操作将请求重定向到另一个JSPServlet或静态资源文件。能够向目标文件传送参数和值,常用于登陆,权限验证页面。如果使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错。

 

<jsp:setProperty>语法格式:

 

<jsp:setProperty name="beanInstanceName" { property= "*" | property="propertyName" [ param="parameterName" ] | property="propertyName" value="{string | <%= expression %>}" } />  

 

其中:name=beanInstanceName是必选属性,其值为Bean的名字,由jsp:useBean引入。Property=*这是设置Bean属性的快捷方式,在Bean中,属性的名字,类型必须和request对象名称中的参数名称想匹配。Property=propertyName使用request中的一个参数来指定Bean中的一个属性。Property指定Bean的属性名,且Bean属性和request参数的名字应相同。

 

Property=propertyNameparam=parameterName在Bean属性的名字和request参数名字不同时使用这个方法。Param指定request对象的参数名。

 

Property=propertyNamevalue=propertyValuevalue是个可选属性,使用指定的值来设定Bean的属性。

 

不能同时使用param和value,它们都只是不同的方式设置Bean属性的值。如果request对象的参数中有空值或Bean中有一个属性没有与之对应的request参数值,那么对应的Bean属性将不会设置。

 

从客户传到服器上的参数值一般都是字符类型 ,这些字符串为了能够在Bean中匹配就必须转换成其它的类型,下面的表中列出了Bean属性的类型以及他们的转换方法.把字符串转化为其它类型的方法. Property 类型 方法

 

boolean   java.lang.Boolean.valueOf(String).booleanValue()

 

Boolean   java.lang.Boolean.valueOf(String)

 

byte      java.lang.Byte.valueOf(String).byteValue()

 

Byte      java.lang.Byte.valueOf(String)

 

char      java.lang.Character.valueOf(String).charValue()

 

Character java.lang.Character.valueOf(String)

 

double    java.lang.Double.valueOf(String).doubleValue()

 

Double    java.lang.Double.valueOf(String)

 

integer   java.lang.Integer.valueOf(String)intValue()

 

Integer   java.lang.Integer.valueOf(String)

 

float     java.lang.Float.valueOf(String)floatValue()

 

Float     java.lang.Float.valueOf(String)

 

long      java.lang.Long.valueOf(String)longValue()

 

Long      java.lang.Long.valueOf(String)

 

 <jsp:getProperty>语法格式:

 

<jsp:getProperty name="beanInstanceName" property="propertyName" />

 

用来访问一个Bean的属性,将其转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用toString()方法。不能使用其来检索一个已经被索引了的属性。

 

<jsp:useBean>创建一个Bean实例并指定它的名字和作用范围. 语法格式:

 

<jsp:useBean id="beanInstanceName" scope="page | request | session | application" { class="package.class" | type="package.class" | class="package.class" type="package.class" | beanName="{package.class | <%= expression %>}" type="package.class" } { /> | > other elements </jsp:useBean> }

 

<jsp:useBean>用于定位或实例化一个JavaBeans组件。<jsp:useBean>首先会试图定位一个Bean实例,如果这个Bean不存在,那么<jsp:useBean>就会从一个class或模版中进行实例化。

 

为了定位或示例一个Bean,<jsp:useBean>会进行以下步聚,顺序如下:

 

通过给定名字和范围试图定位一个Bean. 对这个Bean对象引用变量以你指定的名字命名. 如果发现了这个Bean,将会在这个变量中储存这个引用。如果你也指定了类型,那么这个Bean也设置为相应的类型. 如果没有发现这个Bean,将会从你指定的class中实例,并将此引用储存到一个新的变量中去。如果这个class的名字代表的是一个模版,那么这个Bean被java.beans.Beans.instantiate实例化. 如果<jsp:useBean>已经实例化(不是定位)了Bean,同时<jsp:useBean>和</jsp:useBean>中有元素,那么将会执行其中的代码. <jsp:useBean>元素的主体通常包含有<jsp:setProperty>元素,用于设置Bean的属性值。正如上面第五步所说的,<jsp:useBean>的主体仅仅只有在<jsp:useBean>实例Bean时才会被执行,如果这个Bean已经存在,<jsp:useBean>能够定位它,那么主体中的内容将不会起作用

 

属性以及用法

 

id="beanInstanceName"

 

在你所定义的范围中确认Bean的变量,你能在后面的程序中使用此变量名来分辨不同的Bean 这个变量名对大小写敏感,必须符合你所使用的脚本语言的规定,在Java Programming Language中,这个规定在Java Language 规范已经写明。如果这个Bean已经在别的<jsp:useBean>中创建,那么这个id的值必须与原来的那个id值一致.

 

scope="page | request | session | application"

 

Bean存在的范围以及id变量名的有效范围。缺省值是page,以下是详细说明:

 

page - 你能在包含<jsp:useBean>元素的JSP文件以及此文件中的所有静态包含文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。

 

request - 你在任何执行相同请求的Jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。你能够使用Request对象访问Bean,比如request.getAttribute(beanInstanceName)

 

session - 从创建Bean开始,你就能在任何使用相同session的Jsp文件中使用Bean.这个Bean存在于整个Session生存周期内,任何在分享此Session的Jsp文件都能使用同一Bean.注意在你创建Bean的Jsp文件中<% @ page %>指令中必须指定session=true

 

application - 从创建Bean开始,你就能在任何使用相同application的Jsp文件中使用Bean.这个Bean存在于整个application生存周期内,任何在分享此application的Jsp文件都能使用同一Bean。

 

class="package.class"

 

Bean的类路径和类名。这个类不能是抽象的,必须有一个公用的,没有参数的构造器。package和class的名字,区分大小写。

 

type="package.class"

 

type可以是一个类本身,也可以是一个类的父类或是一个类的接口。如果你没有使用class或beanName指定type,Bean将不会被实例化。package和class的名字,区分大小写。

 

beanName="{package.class | <%= expression %>}" type="package.class"

 

使用java.beans.Beans.instantiate方法来从一个class或连续模版中实例化一个Bean,同时指定Bean的类型。 beanName可以是package和class也可以是表达式,它的值会传给Beans.instantiate.tupe的值可以和Bean相同。 package 和 class 名字区分大小写。不能同时使用class和BeanName。

 

<jsp:plugin>执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它。语法格式:

 

<jsp:plugin

 

type="bean | applet"

 

code="classFileName"

 

codebase="classFileDirectoryName"

 

[ name="instanceName" ]

 

[ archive="URIToArchive, ..." ]

 

[ align="bottom | top | middle | left | right" ]

 

[ height="displayPixels" ]

 

[ width="displayPixels" ]

 

[ hspace="leftRightPixels" ]

 

[ vspace="topBottomPixels" ]

 

[ jreversion="JREVersionNumber | 1.1" ]

 

[ nspluginurl="URLToPlugin" ]

 

[ iepluginurl="URLToPlugin" ] >

 

[ <jsp:params>

 

[ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+

 

</jsp:params> ] [ <jsp:fallback> text message for user </jsp:fallback> ] </jsp:plugin>

 

<jsp:plugin>元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件。当Jsp文件被编译,送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。注意,<object>用于HTML 4.0 ,<embed>用于HTML 3.2. 一般来说,<jsp:plugin>元素会指定对象是Applet还是Bean,同样也会指定class的名字,还有位置,另外还会指定将从哪里下载这个Java插件。具体如下:

 

属性

 

type="bean | applet"

 

.将被执行的插件对象的类型,你必须得指定这个是Bean还是applet,因为这个属性没有缺省值.

 

code="classFileName"

 

将会被Java插件执行的Java Class的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中.

 

codebase="classFileDirectoryName"

 

将会被执行的Java Class文件的目录(或者是路径),如果你没有提供此属性,那么使用<jsp:plugin>的jsp文件的目录将会被使用.

 

name="instanceName"

 

这个Bean或applet实例的名字,它将会在Jsp其它的地方调用.

 

archive="URIToArchive, ..."

 

一些由逗号分开的路径名,这些路径名用于预装一些将要使用的class,这会提高applet的性能。

 

align="bottom | top | middle | left | right"

 

图形,对象,Applet的位置,有以下值:

 

bottom

 

top

 

middle

 

left

 

right

 

height="displayPixels" width="displayPixels"

 

Applet或Bean将要显示的长宽的值,此值为数字,单位为象素.

 

hspace="leftRightPixels" vspace="topBottomPixels"

 

Applet或Bean显示时在屏幕左右,上下所需留下的空间,单位为象素.

 

jreversion="JREVersionNumber | 1.1"

 

Applet或Bean运行所需的Java Runtime Environment (JRE) 的版本. 缺省值是 1.1.

 

nspluginurl="URLToPlugin"

 

Netscape Navigator用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp

 

iepluginurl="URLToPlugin"

 

IE用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp

 

<jsp:params> [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>

 

你需要向applet或Bean传送的参数或参数值。

 

<jsp:fallback> text message for user </jsp:fallback>

 

一段文字用于Java 插件不能启动时显示给用户的,如果插件能够启动而applet或Bean不能,那么浏览器会有一个出错信息弹出.