QQ登录

只需要一步,快速开始

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

JSP语法

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

JSP语法(1)——HTML注释

4 n. s9 Y4 q6 d4 s3 t

作者:飞刀/ aspcn.com

; j( Q4 r- L3 C0 A& G3 M( R

HTML 注释

5 w# V' u7 J* T1 J; j. k9 X% t+ q' ^

在客户端显示一个注释. 7 V. c* S3 b% C 7 v5 N$ f) A! v1 n \4 N6 N3 qJSP 语法

; H* Y, X4 c/ m. R9 ?9 T

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

j9 E5 }8 O; D9 S9 k3 m( N4 j0 Q

例子 1

7 g& F) G6 b, ~& U

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

0 |2 M! s1 B! r8 @) y2 D# F

在客户端的HTML源代码中产生和上面一样的数据: 0 n4 t L M6 j2 ^) P8 s 0 i3 d0 {0 i, ~* `; u& n6 f<!-- This file displays the user login screen -->

1 L O+ ~7 n$ p* ]

例子 2

) e: p4 d5 q8 ]" D& n$ ?6 ~0 X

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

Q" l3 |4 }+ k o) x

在客户端的HTML源代码中显示为: - {$ [9 t5 ]7 b* G. L! x* ~ * ~& h8 F5 q& v( h) X' ~. @<!-- This page was loaded on January 1, 2000 -->

- J% U4 ]( c7 y. `/ X

描述

& A1 o a K' [" k9 R6 F& }

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

) e( }! f& |5 _5 r+ e

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(2)——隐藏注释

作者:飞刀/ aspcn.com

隐藏注释

$ s& j% Q; b' }! v1 D% C0 s

写在JSP程序中,但不是发给客户。 6 L* J) K& U. ^' D" x0 j7 _/ y . y, @+ W: e* X& N) JJSP 语法

<%-- comment --%>

例子:

<%@ page language="java" %> 6 j |7 R* l$ [) n ~0 z1 d<html> 7 i6 ~3 G9 P0 G9 h& |<head><title>A Comment Test</title></head> + O0 }4 y7 t$ y% s <body> 0 S% Z/ M5 v4 A. x <h2>A Test of Comments</h2> / i; @# t. V7 E8 S: s" z, j <%-- This comment will not be visible in the page source --%> 1 R$ {+ Q3 w, X$ r </body> ' D) `# T1 ?/ `</html>

描述

用隐藏注释标记的字符会在JSP编译时被忽略掉。这个注释在你希望隐藏或注释你的JSP程序时是很有用的。

JSP编译器不是会对<%--and--%>之间的语句进行编译的,它不会显示在客户的浏览器中,也不会在源代码中看到在<%-- --%>之间,你可以任意写注释语句,但是不能使用 "--%>",如果你非要使用请用"--%\>".

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(3)——声明

作者:飞刀/ aspcn.com

声明

在JSP程序中声明合法的变量和方法 0 g) @$ c) v$ l' }" c* E- O9 _* j* m4 o JSP 语法

<%! declaration; [ declaration; ]+ ... %>

例子

<%! int i = 0; %> 6 S8 }4 O3 p& R: f<%! int a, b, c; %> / r3 }% O8 e" d8 p$ ^# C$ X<%! Circle a = new Circle(2.0); %>

描述

声明你将要在JSP程序中用到的变量和方法。你也必须这样做,不然会出错. * I% v0 n2 m D9 J0 U$ X 8 \4 Q; z0 R; G3 l! ^2 Y# a你可以一次性声明多个变量和方法,只要以";"结尾就行,当然这些声明在Java中要是合法的。 0 N. p% X( W! q! Y) e$ `- v" H- b ! s, z1 j" J% w9 p# J. f# ^6 T. O5 ] 当你声明方法或变量时,请注意以下的一些规则: 2 a" C; k/ h. k& G/ j- `; G2 s( \4 P : Q! E# Z0 d. S! p9 i d 声明必须以";"结尾(Scriptlet有同样的规则,但是 表达式就不同了). 7 k+ _5 Q( A8 f, B! |3 i你可以直接使用在<% @ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明.

一个声明仅在一个页面中有效。如果你想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@ include %>或<jsp:include >元素包含进来。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(4)——表达式

作者:飞刀/ aspcn.com

表达式

包含一个符合JSP语法的表达式 1 R/ O2 o* {: b, T% r5 @. ] N; g2 _6 q3 V. _1 C% _JSP 语法

<%= expression %>

例子

<font color="blue"><%= map.size() %></font> 5 k$ u2 O0 M: s5 m, Q<b><%= numguess.getHint() %></b>.

描述

表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后插入到这个表达示在JSP文件的位置显示。因为这个表达式的值已经被转化为字符串,所以你能在一行文本中插入这个表达式(形式和ASP完全一样). 4 m) Q2 Y U X0 Y; L 5 ^6 Q3 f) f! f当你在JSP中使用表达式时请记住以下几点: 2 v: i7 P* i( b. ?9 ~% w$ D: s+ n 3 |+ l. F' m! K$ \ 你不能用一个分号(";")来作为表达式的结束符.但是同样的表达式用在scriptlet中就需要以分号来结尾了!查看Scriptlet 这个表达式元素能够包括任何在Java Language Specification中有效的表达式.

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

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(5)——Scriptlet

作者:飞刀/ aspcn.com

Scriptlet

包含一个有效的程序段. 1 z9 n& p6 N8 b" A; { 1 @. {* c2 Q! j2 jJSP 语法

<% code fragment %>

例子

<% * K; @" K. E" Q# q0 j! HString name = null; 3 \" |* B/ b( W0 g if (request.getParameter("name") == null) { ; _ K. x3 R% x1 y6 c. n1 o2 k1 i %> 1 a0 i( s; J5 B) v* }9 c C D <%@ include file="error.html" %> - V. }. {- u7 L6 P5 S. r2 I& @- s; ~ <% . ?* @6 W) c; u, }} else { # Y* m! j# Y* q2 S2 H6 S- U foo.setName(request.getParameter("name")); ! F: E/ b7 p; y5 n* }" ^if (foo.getName().equalsIgnoreCase("integra")) ' {+ m) ~9 K1 L6 t' t3 Sname = "acura"; ! x7 i% v( S8 u* U) @8 L if (name.equalsIgnoreCase( "acura" )) { 5 n! ~& }8 G1 O! |; x %>

描述

一个scriptlet能够包含多个jsp语句,方法,变量,表达式 7 R- E$ }1 O5 W. p. ] * g9 l, @0 i# U* ] n因为scriptlet,我们便能做以下的事: ; {9 t8 M8 S) j& t: z4 b + M- W$ a! ^8 O# F D2 j# s 声明将要用到的变量或方法(参考 声明). : k9 t, F' U4 m, d5 k) X/ `" S编写JSP表达式(参考 表达式). ; A% b# T% p6 ? T# f7 c, O6 K 使用任何隐含的对象和任何用<jsp:useBean>声明过的对象 : K4 x3 \7 ?" d编写JSP语句 (如果你在使用Java语言,这些语句必须遵从Java Language Specification,). 0 O% q. m7 J# w2 p/ X* \任何文本,HTML标记,JSP元素必须在scriptlet之外 7 m& T* t7 g+ ?6 i, j" U当JSP收到客户的请求时,scriptlet就会被执行,如果scriptlet有显示的内容,这些显示的内容就被存在out对象中。

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(6)——Page指令

作者:飞刀/ aspcn.com

 Page 指令

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

0 h. b, N1 y e& ]

JSP 语法+ g/ h. ?8 e& X( i$ ]8 o <%@ page % Q' S$ T: U0 j n. H[ language="java" ] ' I [/ @6 L2 c/ t[ extends="package.class" ] 1 T: x5 w: s+ d" ~4 V [ import="{package.class | package.*}, ..." ] 4 _) d+ D8 X9 ~1 G- ]2 {1 u" k8 ]6 r[ session="true | false" ] 1 e! `- H2 U' F5 W[ buffer="none | 8kb | sizekb" ] 8 W/ v3 W5 l. J4 n$ [ [ autoFlush="true | false" ] 3 x9 u8 U+ x; B/ B! n" m[ isThreadSafe="true | false" ] 3 f: K/ Y. U5 t, A- @1 b[ info="text" ] ' P; L+ J/ W: ]; y3 W5 I7 l [ errorPage="relativeURL" ] & j3 L& { B$ j- O& Z [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] ! h% z& D h- F" E q6 ?, u9 S [ isErrorPage="true | false" ] _9 \4 y" ]: h- c$ J: Z %> , v+ M, n, D" O7 b% A2 Q例子 . v5 `3 W6 m5 m9 M+ g5 q0 d8 j<%@ page import="java.util.*, java.lang.*" %> & Z9 B- H, d6 L) K- F- h9 r <%@ page buffer="5kb" autoFlush="false" %> ) _. R! H+ F/ l- q2 n<%@ page errorPage="error.jsp" %> 9 j" ^; ^( \8 D- \描述2 x/ C1 h/ s5 {% x3 t2 j; H! }% o <%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。但是<% @ page %>指令不能作用于动态的包含文件,比如 <jsp:include> 4 U% c3 U8 R9 Z6 X 2 U: j b2 [4 c3 `* i& @* D你可以在一个页面中用上多个<% @ page %>指令,但是其中的属性只能用一次,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不多(参照Java Language),所以你就能多用此属性几次了. 7 q0 C# q: ^3 f3 z9 o7 Q; M" E+ q( X$ x7 r; E+ d% B1 A 无论你把<% @ page %>指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部. + R# n# S3 K& ^" O* W/ v( n

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JSP语法(7)——Taglib指令

作者:飞刀/ aspcn.com

Taglib 指令

# e9 ~/ l5 _& G3 G! @

定义一个标签库以及其自定义标签的前缀. . q! @+ N! d/ P; S3 ^# I$ q3 n( k 6 P: \9 j% a& K0 x* q! FJSP 语法

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

例子

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %> % |0 p0 w; e( d<public:loop> + |* G- m; F; b. ]. / f6 J, u3 Q4 K/ a* M! c. ; R1 ]2 O: a$ `( c' O: ~ </public:loop>

描述

<% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。 3 c1 |. Z# X4 [5 S % j4 W6 q! m, L z. [. f! C7 W& `这里自定义的标签含有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。JSP元素是JSP语法的一部分,和XML一样有开始标记和结束标记。元素也可以包含其它的文本,标记,元素。比如,一个jsp:plugin元素有<jsp:plugin>开始标记和</jsp:plugin>结束标记,同样也可以有<jsp:params>和<jsp:fallback>元素. 9 d. n+ J! G. [7 H 0 D* l$ |- a. ~, B3 ~! v! U 你必须在使用自定义标签之前使用<% @ taglib %>指令,而且你可以在一个页面中多次使用,但是前缀只能使用一次 : i8 Y z5 m" o; D7 r+ R- l 2 T& ^6 j" W* h! K# T1 I( Z2 `0 _属性

uri="URIToTagLibrary" 4 h7 V" [- o0 q# C6 O- c V Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容:

Uniform Resource Locator (URL), 由 RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html ) D1 V0 u3 X$ J: E: K/ a: X7 x  4 t% c7 N8 O! w) F7 SUniform Resource Name (URN), 由 RFC 2396定义 / ?! g2 P0 `) s' i$ B6 O  . L$ T: T6 Q7 F6 r$ W- ?5 i. r 一个相对或绝对的路径 ' i: o! c6 `) d/ P2 yprefix="tagPrefix" 8 h- x: I5 ]/ |4 C在自定义标签之前的前缀,比如,在<public:loop>中的public,如果这里不写public,那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀

回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

作者:飞刀/ aspcn.com

<jsp:forward>

1 S3 q# P" h0 ^1 [* U' c0 X

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

JSP 语法

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

+ p2 V4 t$ I. e7 i/ x: {0 H or

. M+ Z, s7 i4 _<jsp:forward page={"relativeURL" | "<%= expression %>"} >

8 w% {. l n) u& ?; `6 N7 f; ?6 D1 L' x<jsp:param name="parameterName"

$ d4 ?8 l* I6 ~) ^" e0 j' i value="{parameterValue | <%= expression %>}" />+

; _% Q' X+ B' W </jsp:forward>

例子

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

7 H3 j6 a. b2 x6 g6 g

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

. a9 K" N) I {6 T3 a

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

/ f- ^7 U2 L, m" J$ q& h

</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语法(9)——<jsp:getProperty>

作者:飞刀/ aspcn.com

<jsp:getProperty> 4 {2 e* X1 y& r! b( v# R

获取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语法(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>

% F, U+ ]2 ~5 l) V+ X

描述

<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>来传递多个参数。

回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2026-8-13 10:06 , Processed in 0.519601 second(s), 96 queries .

回顶部