第四章JSP语法详解
1.(p67)JSP将动态部分用特殊的标记嵌入,这些标记通常以“<%”开始,并以“%>”结束。
2.(p67)三类主要的JSP元素:
——Scriptingelements:可以定义最终转换为Servlet的部分
——Directives:可以控制这个Servlet的整体结构
——Actions:可以指定可重用的已有组件,另外还可以控制JSP引擎的运行
3.(p68)一般的注释:<!--comment-->
隐藏的注释:<%--comment--%>
用隐藏注释标记的字符会在JSP编译时被忽略。JSP编译器不会对<%--and--%>之间的语句进行编译,它不会显示在客户的浏览器中,也不会出现在源代码中。
4.(p68)声明变量和方法:<%!declaration;[declaration]%>
一般情况下,一个声明的有效范围是本页面。但是,如果JSP源文件用<jsp:include>指令或include指令包含一些静态文件,声明的有效范围将会扩大,也就是说:声明在该静态文件中也有效。但是如果JSP源文件中用<jsp:include>指令包含进来一个动态文件,主JSP文件中的声明在该动态文件中将不起作用。
5.(p69)表达式:<%=expression%>
表达式用于求值,然后其值转化为字符串,而且插入在JSP文件中显示该表达式的地方。而且可以在文本中使用表达式。表达式标签能包含符合JAVA语言规范的任何有效表达式,但是要注意:不能使用分号作为表达式的结尾,然而,在脚本段<%……%>标签中,表达式要求以分号作为结尾。
例子1:
<%!Strings=newString("hello");%>
<fontcolor="blue"><%=s%></font>
例子2:
随机显示一个数字:
<fontcolor="blue"><%=java.lang.Math.random()%></font>
6.(p70)Page指令用来定义JSP文件中的全局属性。在一个JSP页面中,可以定义一个或多个Page指令。但是,除了import属性以外的其他几种属性,只能定义一次。<%@page%>指令作用于整个JSP页面,同样包括静态的包含文件。但是不能作用于动态的包含文件。
<%pageattribute="value"...%>
属性:
1)<%@pagelanguage="java"%>
指定文件中所使用的脚本语言,目前仅java为有效值和默认值。该指令作用于整个文件,当多次使用该指令时,只有第一次使用是有效的。
2)<%@pageimport="java.io.*,java.util.*"%>
指定导入的Java软件包名或者类名列表,该列表用逗号分隔,在JSP文件中,可以多次使用该指令来导入不同的软件包。
3)<%@pagecontent-type="text/html;charset=GB2312"%>
指定响应结果的MIME类型,默认的MIME类型是text/html。默认字符编码为ISO-8859-1。当多次使用该指令时,只有第一次使用是有效的。
4)<%@pagesession="true"%>
指定JSP页是否使用Session,默认为true。如果它为false,就不能使用session对象,以及定义scope=session的<jsp:useBean>元素,这样的使用会导致错误。
5)<%@pagebuffer="none|8kb|sizekb"%>
Buffer的大小被out对象用于缓存处理执行后的JSP对客户浏览器的输出。
6)<%@pageautoFlush="true|false"%>
用来设置当buffer溢出时,是否需要强制输出。如果其值定义为true,则输出正常;如果它被设置为false,当buffer溢出时,就会导致一些意外错误的发生。如果把buffer设置为none,那么就不能把autoFlush设置为false。默认是true。
7)<%@pageisThreadSafe="true|false"%>
用来设置JSP文件是否支持多线程使用。如果设置为true,那么一个JSP能够同时处理多个用户的请求;相反,如果设置为false,一个JSP只能一次处理一个请求。默认值为true。
8)<%@pageinfo="text"%>
在JSP被执行时,用来描述当前JSP文件的相关信息。可以通过Servlet.getServletInfo()方法取得。
9)<%@pageerrorPage="relativeURL"%>
设置处理异常事件的JSP文件。当发生异常时,就跳转到relativeURL指定的界面上。
10)<%@isErrorPage="true|false"%>
设置此页是否为出错页,如果被设置为true,则可以使用exception对象。默认为false。
11)<%@extends="package.class"%>
表明JSP编译时需要加入的Javaclass的全名,但是需要慎重使用,会限制JSP的编译能力。
18.(p72)在JSP文件中用Include指令包含一个静态的文件,同时解析这个文件中的JSP语句:<%@includefile="path"%>
Include命令将在JSP编译时插入一个包含文本或代码的文件。当使用include时,这个包含的过程是静态的。这个被包含的文件所执行的结果将会插入到JSP文件中放<%@include%>的地方。
19.(p77)<jsp:include>标签允许包含动态文件和静态文件。如果文件是静态文件,那么把包含的文件内容加到jsp文件中,这个被包含文件不会被JSP编译器执行。相反,如果这个被包含文件是动态的文件,那么这个被包含文件将会被JSP编译器执行。
20.(p78)<jsp:forward>标签重定向到一个HTML文件、JSP文件,或者一个程序段。该标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象。<jsp:forward>标签以下的代码,将不能执行。可以使用<jsp:param>标签向目标文件传递参数和值,注意如果使用了<jsp:param>标签,那么目标文件必须是一个动态的文件。
21.(p80)<jsp:useBean>标签用来在JSP页面中创建一个Bean实例并指定它的名字以及作用范围。至于如何理解,请参考下面两个帖子:
http://turingbook.group.javaeye.com/group/blog/577256
http://www.wang48.com/jishubaodianview/?jsd_id=201
22.(p81)<jsp:getPropertyname="name"property="propertyName"/>将获得Bean的属性值,并将之转换为一个字符串,然后显示在JSP页面中。注意事项:
1)在使用<jsp:getProperty>之前,必须用<jsp:useBean>创建它。
2)不能使用<jsp:getProperty>来检索一个已经被索引了的属性。
3)能否和JavaBeans组件一起使用<jsp:getProperty>,但是不能与EJB一起使用。
23.(p85)<jsp:plugin>元素用于在浏览器中播放或显示一个对象(典型的就是Applet和Bean),而这种显示需要有浏览器的java插件。
24.本章最后的例子没有看
<!--EndFragment-->
本文详细介绍了JSP的基本语法,包括特殊标记的使用方法、三种主要的JSP元素、注释方式、变量声明、表达式应用等。此外还阐述了Page指令的作用及多种属性配置,并对比了静态与动态文件包含的区别。

654

被折叠的 条评论
为什么被折叠?



