QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4240|回复: 11
打印 上一主题 下一主题

JSP语法

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 00:22 |只看该作者 |正序浏览
|招呼Ta 关注Ta

JSP语法(1)——HTML注释

' s3 B% X# J9 M5 [3 x, `. I

作者:飞刀/ aspcn.com

2 _0 N0 _% j. r. r

HTML 注释

& t2 J2 H& ~2 ]( [8 V' Z

在客户端显示一个注释. % ?* H- {: l' O8 [+ x7 [# P: x- q; V& T! L" k JSP 语法

/ n3 }7 j Y8 c) t

<!-- comment [ <%= expression %> ] -->

' _: l* ?: h0 ^$ M5 C3 e

例子 1

r2 X) k! }/ _: ~* v

<!-- This file displays the user login screen -->

# p& X; \8 s, s/ @ U

在客户端的HTML源代码中产生和上面一样的数据: + [/ Z7 P( W* y$ C. H" [2 I * s2 j4 H9 d3 K<!-- This file displays the user login screen -->

; L7 b: M) z& k6 ]$ u+ O

例子 2

2 m9 e5 N$ v' \* N) b

<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->

& X2 Y& |& F" E

在客户端的HTML源代码中显示为: 8 {% y+ p. M5 _/ G6 s" l 1 v, B# Y% K6 q1 Y<!-- This page was loaded on January 1, 2000 -->

8 ?' U8 Q6 V0 L* T) k

描述

/ U g+ y/ J- r8 e$ V

这种注释和HTML中很像,也就是它可以在"查看源代码"中看到。

8 @( m) o) N% B* b4 ?

唯一有些不同的就是,你可以在这个注释中用表达式(例子2所示)。这个表达示是不定的,由页面不同而不同,你能够使用各种表达式,只要是合法的就行。

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP由浅入深(12)—— 表单编辑
编译:ZSC/太平洋网络学院

  比如来自Blazix服务器的标志库在你的系统环境中不能使用,那么不使用标志库来实现相似的功能呢?本教程就是为这个问题而提出的。这个问题是可以解决的,只是代码要长一点。主要地,你必须亲自编辑HTML标志,然后将它设置缺省值。从下面的例子的例子中我们可以学到怎样修改GetName.jsp以提供类似于blx:getProperty的特性,但是我们只能手工地编辑HTML标志:

<jsp:useBean id="user" class="UserData" scope="session"/>

<HTML>

<BODY>

<FORM METHOD=POST ACTION="SaveName.jsp">

What's your name? <INPUT TYPE=TEXT NAME=username

SIZE=20 VALUE="<%= user.getUsername() %>"><BR>

What's your e-mail address? <INPUT TYPE=TEXT

NAME=email SIZE=20

VALUE="<%= user.getEmail() %>"><BR>

What's your age? <INPUT TYPE=TEXT NAME=age

SIZE=4 VALUE=<%= user.getAge() %>>

<><INPUT TYPE=SUBMIT>

</FORM>

</BODY>

</HTML>

如上面的代码所示,它只简单地在INPUT标志上增加一个“VALUE”区域,并且用一个表达是初始化这个区域。

为了处理在输入过程中的异常错误,我们可以在bean中使用“String”区域并且将它转换为目标数据类型就可实现。所以这样也可以处理异常错误。

作为课后练习,我们可以将前面教程中的例子改成不用Blazix标志库。

5 j& v0 W5 u3 G z! [" p

至此,本“JSP由浅入深”系列教程到此全部结束,希望对你有帮助。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP由浅入深(11)—— 标记库
编译:ZSC/太平洋网络学院

  JSP 1.1提出了一种扩展的JSP标志的方法,这种方法命名为“标志库”。这些库允许另外的一些类似于jsp:include 或者jsp:forward的标志,但是它们不是以jsp:为前缀的并且还附件一些特性。

  为了介绍标志库,在本教程中我们使用Blazix标志库作为例子。这个标志库只能用在Blazix服务器中,这个服务器你可以免费下载。

每一个标志库都有它自己的标志库特殊的文档。为了使用标志库,你可以使用"taglib" directive来指出标志库“description”处在什么地方。对于Blazix标志库而言,directive如下:

<%@ taglib prefix="blx" uri="/blx.tld" %>

上面者句中“uri”就是指出了标志库描述所在的地方。标志库的前缀是不同的。这个指令的意思是说我们可以使用blx:来使用库中的标志。Blazix标志库提供了一个blx:getProperty标志。这个标志可以允许用户编辑表单数据。现在,在GetName.jsp文件中,我们增加一个jsp:useBean并且将表单放置在blx:getProperty中:

<%@ taglib prefix="blx" uri="/blx.tld" %>

<jsp:useBean id="user" class="UserData" scope="session"/>

<HTML>

<BODY>

<blx:getProperty name="user" property="*">

<FORM METHOD=POST ACTION="SaveName.jsp">

What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>

What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>

What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4>

<><INPUT TYPE=SUBMIT>

</FORM>

</blx:getProperty>

</BODY>

</HTML>

从上面的代码中我们可以发现blx:getProperty不是以/>结尾的,而是用</blx:getProperty>来结尾。这条语句将所有的表单输入区域输入到blx:getProperty中,这样它们就可以被标志库正确地修改。

接着建立一个从GetName.jsp到NextPage.jsp的连接,你将发现bean的数据自动显示在输入区域中。所以现在用户可以编辑数据了。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(10)——<jsp:include>

作者:飞刀/ aspcn.com

<jsp:include>

包含一个静态或动态文件.

JSP 语法

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

or

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

<jsp:param name="parameterName"

value="{parameterValue | <%= expression %>}" />+

</jsp:include>

Examples

<jsp:include page="scripts/login.jsp" />

<jsp:include page="copyright.html" />

<jsp:include page="/index.html" />

<jsp:include page="scripts/login.jsp">

<jsp:param name="username" value="jsmith" />

</jsp:include>

3 f6 ^! X3 H6 D+ q3 w" v

描述

<jsp:include>元素允许你包含动态文件和静态,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件动态的,那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似)

你不能从文件名上判断一个文件是动态的还是静态的,比如aspcn.asp

就有可能只是包含一些信息而已,而不需要执行。<jsp:include>能够同时处理这两种文件,因此你就不需要包含时还要判断此文件是动态的还是静态的.

如果这个包含文件是动态的,那么你还可以用<jsp:param>还传递参数名和参数值。

属性

  • page="{relativeURL | <%= expression %>}"

    参数为一相对路径,或者是代表相对路径的表达式.

  • flush="true"

    这里你必须使用flush="true",你不能使用false值.缺省值为false

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

    <jsp:param>子句能让你传递一个或多个参数给动态文件

    你能在一个页面中使用多个<jsp:param>来传递多个参数。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(9)——<jsp:getProperty>

作者:飞刀/ aspcn.com

<jsp:getProperty> ! S5 r( j: l6 V3 g

获取Bean的属性值,用于显示在页面中

JSP 语法

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

例子

<jsp:useBean id="calendar" scope="page" class="employee.Calendar" />

<h2>

Calendar of <jsp:getProperty name="calendar" property="username" />

</h2>

描述

这个<jsp:getProperty>元素将获得Bean的属性值,并可以将其使用或显示在JSP页面中.在你使用<jsp:getProperty>之前,你必须用<jsp:useBean>创建它.

<jsp:getProperty>元素有一些限制:

  • 你不能使用<jsp:getProperty>来检索一个已经被索引了的属性

  • 你能够和JavaBeans组件一起使用<jsp:getProperty>,但是不能与Enterprise

    Bean一起使用。

属性

  • name="beanInstanceName"

    bean的名字,由<jsp:useBean>指定

  • property="propertyName"

    所指定的Bean的属性名。

技巧:

  • 在sun的JSP参考中提到,如果你使用<jsp:getProperty>来检索的值是空值,那么NullPointerException将会出现,同时如果使用程序段或表达式来检索其值,那么在浏览器上出现的是null(空).
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(8)——<jsp:forward>

作者:飞刀/ aspcn.com

<jsp:forward>

; n& G8 T8 m) {9 W

重定向一个HTML文件,JSP文件,或者是一个程序段.

JSP 语法

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

* d# Y3 M3 e) {- Oor

" V N- \1 V3 P9 s% q<jsp:forward page={"relativeURL" | "<%= expression %>"} >

$ A* F, W! }( B& N3 L& K% R<jsp:param name="parameterName"

, {8 g$ H" a$ F1 _$ X value="{parameterValue | <%= expression %>}" />+

* \. e( Y6 k$ o </jsp:forward>

例子

<jsp:forward page="/servlet/login" />

+ D+ r; J+ ^, B, K$ ~7 o; ~

<jsp:forward page="/servlet/login">

* X x9 x3 m1 a+ s5 l1 `% B

<jsp:param name="username" value="jsmith" />

% q+ F: T$ V. d6 e

</jsp:forward>

描述

<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.<jsp:forward>标签以下的代码,将不能执行.

你能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果你使用了<jsp:param>标签的话,目标文件必须是一个动态的文件,能够处理参数.

如果你使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错.

属性

  • page="{relativeURL | <%= expression %>}"

    这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL.这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php).

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

    向一个动态文件发送一个或多个参数,这个文件一定是动态文件.

    如果你想传递多个参数,你可以在一个JSP文件中使用多个<jsp:param>。name指定参数名,value指定参数值.

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(7)——Taglib指令

作者:飞刀/ aspcn.com

Taglib 指令

( w: n1 Q( q$ s8 z% }

定义一个标签库以及其自定义标签的前缀. $ a+ B3 @/ j$ u, e3 [! f0 J" { . T' L- j; |4 O, xJSP 语法

<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>

例子

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %> 7 j3 F0 \1 D/ B$ S, P6 l; G <public:loop> 9 ]; D1 Q& L: D. _2 Z' Z. K, e* t; z$ ~/ k6 s1 o1 U. , C' n5 L( B! w$ f! `</public:loop>

描述

<% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。 . `' ?1 _/ ]7 B9 B' F1 m7 | $ w6 {7 }: @9 B( ^; b& V. J 这里自定义的标签含有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。JSP元素是JSP语法的一部分,和XML一样有开始标记和结束标记。元素也可以包含其它的文本,标记,元素。比如,一个jsp:plugin元素有<jsp:plugin>开始标记和</jsp:plugin>结束标记,同样也可以有<jsp:params>和<jsp:fallback>元素. ) M" U% c$ p$ E# N) k3 m& p* m& C' d$ C* `6 m: ]! l4 a 你必须在使用自定义标签之前使用<% @ taglib %>指令,而且你可以在一个页面中多次使用,但是前缀只能使用一次 7 m2 I" X" V! K. l9 [" u: }: G 8 p) T# i* J& w* k6 \属性

uri="URIToTagLibrary" ! A# e& A, z& J6 ^3 @Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容:

Uniform Resource Locator (URL), 由 RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html 7 J( F2 f2 b+ w0 B" Q x  9 `, [' O1 h7 W1 r/ |1 D3 x BUniform Resource Name (URN), 由 RFC 2396定义, ]# {( t' ?- l* p% S1 v8 Z   5 T+ v! K5 w. m' N9 y 一个相对或绝对的路径 # N: I3 n+ I& b1 F2 a. O prefix="tagPrefix") }" u! G e) U$ D+ k# i% z 在自定义标签之前的前缀,比如,在<public:loop>中的public,如果这里不写public,那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(6)——Page指令

作者:飞刀/ aspcn.com

 Page 指令

定义JSP文件中的全局属性.

: n" X: t7 t, s ]$ @7 U

JSP 语法 , U+ Y2 W, f) T<%@ page / q3 v8 Z6 G; S [ language="java" ] 8 {( O" i4 C+ r s3 K5 ~ [ extends="package.class" ] 6 R& X. z1 L x* J3 y# Q[ import="{package.class | package.*}, ..." ] 7 n6 ]' u3 C: m [ session="true | false" ] 8 ]' {' ?; c3 P6 g! z1 y" q$ ]( g [ buffer="none | 8kb | sizekb" ] : x) o6 Z2 S) h6 r9 P [ autoFlush="true | false" ] ( D$ `' H7 b8 a7 l9 [3 }# X/ s[ isThreadSafe="true | false" ] 3 A& p; C" [3 o: t) e2 u6 N[ info="text" ] % [4 q, R' w0 x0 a1 n3 o+ \[ errorPage="relativeURL" ] 0 {3 Z S a+ {: h6 Q [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] # M, f" E2 o! v. ` [ isErrorPage="true | false" ] + n, g0 {2 i+ j6 G' f- _! X2 \2 X0 H%> 3 L- }) ~* S0 L U" h& b$ T( c例子% M* a5 R9 @; R6 P# Q3 K0 l <%@ page import="java.util.*, java.lang.*" %> $ V) F9 `, ?( d; X- S <%@ page buffer="5kb" autoFlush="false" %> " D% ` c* ]' P, S- O7 Y2 b<%@ page errorPage="error.jsp" %> % L- F5 w) A, s8 W4 Q 描述 : ?: V& V' O% D0 {: k6 A+ o<%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include> * r: ^5 M1 h9 Z* e$ ~ / a3 g9 [6 w4 w* g你可以在一个页面中用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不多(参照Java Language),所以你就能多用此属性几次了. 4 s- K9 D- _0 h4 n5 v; b! I / j& I a" n: e/ f" W3 @4 K 无论你把<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部. , {# Q6 R) b8 D3 l' G* v8 D

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(5)——Scriptlet

作者:飞刀/ aspcn.com

Scriptlet

包含一个有效的程序段. , b: E$ e. V8 C3 f 5 f) C9 \* K' n# ]JSP 语法

<% code fragment %>

例子

<% $ a" u5 y. D. Z9 s! k2 Z% T* nString name = null; ) R: r: e! X# E if (request.getParameter("name") == null) { |5 ~. U( v+ T) F %> 0 T$ S6 G' E1 B. d! j6 O. J- U<%@ include file="error.html" %> 8 z* V4 k5 t# q8 c <% : `6 I, x$ e' h( U9 l} else { 3 S7 |1 q! A% d+ wfoo.setName(request.getParameter("name")); 8 |& }) {/ o t$ B/ uif (foo.getName().equalsIgnoreCase("integra")) - ?( V0 D$ C7 R1 J, j" B% p4 O name = "acura"; : C6 O5 ^3 R/ Z9 \' F if (name.equalsIgnoreCase( "acura" )) { 1 J0 R$ @: h# i- p- a %>

描述

一个scriptlet能够包含多个jsp语句,方法,变量,表达式 ( \* f }: K" t , d! T9 E G3 g# h因为scriptlet,我们便能做以下的事: ( m9 A) m" N0 ]1 }2 Q . H# c0 H+ p* t8 s+ Y声明将要用到的变量或方法(参考 声明). 6 s9 t- b% a! j# M 编写JSP表达式(参考 表达式). 3 w7 k7 O! S3 D" @& _. _! D+ w# c 使用任何隐含的对象和任何用<jsp:useBean>声明过的对象 ( @% g7 @# M( I: a5 a编写JSP语句 (如果你在使用Java语言,这些语句必须遵从Java Language Specification,). 1 o& S+ d Q0 H 任何文本,HTML标记,JSP元素必须在scriptlet之外 # ~/ ], {, D2 S+ F* W n4 S, u当JSP收到客户的请求时,scriptlet就会被执行,如果scriptlet有显示的内容,这些显示的内容就被存在out对象中。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(4)——表达式

作者:飞刀/ aspcn.com

表达式

包含一个符合JSP语法的表达式 ) D5 x2 l a; d' ]0 ~" v) m! N & I& |$ J% i0 V+ W- e5 _/ uJSP 语法

<%= expression %>

例子

<font color="blue"><%= map.size() %></font> # h4 \" m- n+ t4 l <b><%= numguess.getHint() %></b>.

描述

表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达示在JSP文件的位置显示。因为这个表达式的值已经被转化为字符串,所以你能在一行文本中插入这个表达式(形式和ASP完全一样). ' E( ^% S1 u& t; Z$ T7 a; p6 c) |3 K* Y6 a6 u/ j) P 当你在JSP中使用表达式时请记住以下几点: f: h8 Q' u5 f+ F# u 7 n( j `: b' r6 E你不能用一个分号(";")来作为表达式的结束符.但是同样的表达式用在scriptlet中就需要以分号来结尾了!查看Scriptlet 这个表达式元素能够包括任何在Java Language Specification中有效的表达式.

有时候表达式也能做为其它JSP元素的属性值.一个表达式能够变得很复杂,它可能由一个或多个表达式组成,这些表达式的顺序是从左到右。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-12 04:42 , Processed in 0.395010 second(s), 97 queries .

回顶部