`

Java程序员从笨鸟到菜鸟之(十八)JSP基本语法与动作指令

 
阅读更多

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188

Jsp,通常的被大家认为是做网页的前台界面,我刚学习的时候,说实话,真没把他当回事,学的也是囫囵吞枣,有时用到一些指令都需要现查,所以,基础知识的掌握是还是很有必要的,先总体说一下吧:

JSP就是把Java代码嵌套在HTML中,所以JSP程序的结构可以分为两大部分:一部分是静态的HTML代码;另一部分是动态的Java代码和JSP自身的标签和指令;当JSP页面第一次被请求的时候,服务器的JSP编译器会把JSP页面编译成对应的Java代码,根据动态Java代码执行的结果,生成对应的纯HTML的字符串返回给浏览器,这样就可以把动态程序的结果展示给用户。

JSP页面的构成:

一:JSP页面中包含三种注释

HTML格式注释(客户端注释)主要是用于在客户端动态地显示一个注释,格式如下:<!--注释内容[<%=expression%>]-->可通过查看html源代码看到。

JSP代码注释(服务器端注释)也叫JSP隐藏注释,在JSP源代码中,它不会被JSP引擎处理,也不会在客户端的Web浏览器上显示,格式如下:

<%--注释内容--%>

Java语言注释Java中的注释一样不过需写在<%%>内。有单行注释,多行注释。例如<%//单行注释内容%><%/*多行注释内容*/%>

二:指令

JSP中,指令主要用来与JSP引擎进行沟通,并为JSP页面设置全局变量、声明类以及JSP要实现的方法和输出内容的类型等。需要注意的是,指令元素在JSP整个页面范围内有效,并且它不在客户端产生任何输出。使用指令的格式如下:<%@指令名属性1="1"属性2="2"%>

JSP包括三种指令:page指令、include指令和taglib指令。

page指令:定义与JSP页面相关的属性,并和JSP引擎进行通信。一个JSP页面可以包含多个page指令,指令之间是相互独立的,并且指令中除import属性之外的每个属性只能定义一次,否则在JSP页面的编译过程中将出现错误。

page指令可以运用于整个JSP文件,一般来说,page指令可以放在JSP页面的任何位置,但为了便于程序的阅读和格式规范,通常将page指令放在JSP页面的开始部分。

例如:<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>

include指令:用来指定JSP文件被编译时需要插入的资源,这个资源可以是文本、代码、HTML文件或JSP文件。

格式为:<%@includefile="relativeURL"%>

其中,relativeURL表示要包含的文件路径。如果路径以“/”开头,则表示该路径是参照JSP应用的上下关系路径,如果路径直接以目录名或文件名开头,则表示该路径是正在使用的JSP文件的当前路径。一旦JSP文件完成编译,该资源内容就不可变,要改变该资源内容,必须重新编译JSP文件。

利用include指令,可以将一个复杂的JSP页面分为若干个部分,这样可以方便管理JSP页面。一个JSP页面一般可以分为三段:head(页头)、body(页体)和tail(页尾)。可以将一个JSP页面分为3个不同的JSP页面:head.jspbody.jsptail.jsp,其中head.jsp表示页头,body.jsp表示页体,tail.jsp表示页尾,这样对于同一网站的不同JSP页面,可以直接利用include指令调用head.jsptail.jsp,仅body.jsp不同

taglib指令是页面使用者用来自定义标签。可以把一些需要重复显示的内容自定义成为一个标签,以增加代码的重用程度,并使页面易于维护,我们暂且不用。

三:脚本元素

脚本元素是JSP代码中使用最频繁的元素,它是用Java写的脚

本代码。所有的脚本元素均是以“<%”标记开始,以“%>”标记结束,它可以分为如下三类:

声明、表达式、Scriptlet

声明:在JSP中,声明是用来定义在程序中使用的实体,它是一段Java代码,可以声明变量也可以声明方法,它以“<%!”标记开始,以“%>”标记结束,格式如下: <%!具体声明代码%>

每个声明仅在一个JSP页面内有效,如果要想在每个页面中都包含某些声明,可将这些声明包含在一个JSP页面中,然后利用前面介绍的include指令将该页面包含在每个JSP页面中。

表达式:以“<%=”标记开始,以“%>”标记结尾,中间的内容为Java一个合法的表达式,格式如下:<%=expression%> 其中expressionJava表达式。表达式在执行时会被自动转换为字符串,然后显示在JSP页面中。

Scriptlet:是以“<%”标记开始,以“%>”标记结尾的一段Java

代码,它可以包含任意合乎Java语法标准的Java代码,格式如下

<%Java代码%>

四:动作指令

大多数的JSP处理都是通过JSP中的动作元素来完成的,动作元素主要是在请求处理阶段起作用,它能影响输出流和对象的创建、使用、修改等。JSP动作元素是利用XML(可扩展标记语言)语法写成的,它们均以“jsp”作为前缀,下面介绍几种常用的动作元素:

<jsp:include>允许在JSP页面中包含静态和动态页面。如果包含的是静态页面,则只是将静态页面的内容加入至JSP页面中,如果包含的是动态页面,则所包含的页面将会被JSP服务器编译执行。格式如下:

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

page表示所要包含的文件的相对URL,它可以是一个字符串,也可以是一个JSP表达式。flush:默认值为false,若该值为true则表示当缓冲区满时,缓冲区将被清空。

以下是对include两种用法的区别,重要有两个方面的不同:

执行时间上:

静态包含:<%@includefile=relativeURI%>是在翻译阶段执行

动态包含:<jsp:includepage=relativeURIflush=true/>在请求处理阶段执行.

所谓动态包含是指在请求包含页面的时候遇到动态包含指令将请求转到被包含页面,这时去编译被包含页面。静态包含是在请求包含页面时去编译包含页面,编译时遇到静态页面包含伪码将被包含页面的内容复制到被包含页面中进行编译。

引入内容的不同:

%@includefile=relativeURI%>引入静态文本(html,jsp),JSP页面被转化成servlet之前和它融和到一起.

jsp:includepage=relativeURIflush=true/>引入执行页面或servlet所天生的应答文本.

另外在两种用法中filepage属性都被说明为一个相对的URL.如果它以斜杠开头,那么它就是一个环境相关的路径.如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文档的页面所在的路径进行说明。

<jsp:forward>:<jsp:forward>操作允许将当前的请求运行转发至另外一个静态的文件、JSP页面或含有与当前页面相同内容的Servlet。格式如下:

<jsp:forwardpage="relativeURL|<%=expression%>"/>

注意:forward动作指令和HTML中的<a></a>超链接标签是不同的,在<a></a>中只有单击链接才能实现页面跳转,在forward动作指令中一切都是可以用Java的代码进行控制,可以在程序中直接决定页面跳转的方向和时机。在forward跳转并且传递参数的过程中,浏览器地址栏中的地址始终是不变的,传递的参数也不会在浏览器的地址栏中显示,这也是forward动作指令与HTML<a></a>超链接的另一个区别。

<jsp:useBean>标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。
语法:
<jsp:useBeanid="name"scope="page|request|session|application"typeSpec/>
其中typeSpec有以下几种可能的情况:
class="className"|class="className"type="typeName"|beanName="beanName"type="typeName"|type="typeName"|
注:
你必须使用classtype,而不能同时使用classbeanNamebeanName表示Bean的名字,其形式为“a.b.c”
GetProperty指令
<jsp:getProperty>
标签表示获取BEAN的属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。
语法:
<jsp:getPropertyname="name"property="propertyName"/>
注:
1、在使用<jsp:getProperty>之前,必须用<jsp:useBean>来创建它。
2、不能使用<jsp:getProperty>来检索一个已经被索引了的属性。
3、能够和JavaBeans组件一起使用<jsp:getProperty>,但是不能与EnterpriseJavaBean一起使用。
SetProperty指令
<jsp:setProperty>标签表示用来设置Bean中的属性值。
语法:
<jsp:setPropertyname="beanName"prop_expr/>
其中prop_expr有以下几种可能的情形:
property="*"|property="propertyName"|property="propertyName"param="parameterName"|property="propertyName"value="propertyValue"
param指令
param指令用于设置参数值,这个指令本身不能单独使用,单独的param没有实际意义,param指令可与一下三个指令结合使用:
jsp:include
jsp:forward
jsp:plugin
param指令的语法格式如下:
<jsp:paramname="paramName"value="paramValue">

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics