RSS
热门关键字:  性福人生  生化危机  虚拟人生  o ice  秘密潜入1

JSP语法总结

来源: 作者:无忧d下载站采集 时间:2008-04-05 Tag: 点击:
1、注释
  JSP中有两种注释方式,概要的来讲可分为可见、不可见。
  可见就是我们HTML中经常使用的方式,不过在这里注释中可以加入我们的JSP的表达式或者是代码段,例如:<!--comment<%=expression%>-->。

  不可见的方式是JSP特点的一种注释方法,形如:<%--comment--%>的注释方式,当然这里的注释内容也可以是JSP的表达式或代码段。

2、JSP声明
  注:JSP的声名语句必须以“;”结束,可以是变量声名,也可以是函数或类的声名,例:<%!int I;%>其中的“!”号是必须的。

3、JSP的语法
  1、表达式。形如:<%=expression%>,注:表达式不能以“;”结束,在运行后表达式自动转换为字符串,但是如果表达式出现在代码段中则必须以“;”结束。
  2、代码段。代码段可包括如下几个部分:JSP语句、方法(函数)、变量声名、表达式
  例:
  <%
  String name=null;
  if(request.getParameter("name")==null)
  {%>
  <%@include file="error.htm"%>
  <%}else{
  foo.setName(request.getParameter("name"));
  if(foo.getName().equalsIgnoreCase("integer"))
  name="acura";
  if(name.equalsIgnoreCase("acura"))
  ……
  %>

4、JSP的指令
  1、INCLUDE指令。作用:包含并解析静态文件,语法:<%@include file=filename%>。
  这个被包含文件可以是html文件,jsp文件,文本文件,或者只是一段Java代码,但是你得注意在这个包含文件中不能使用< html>、</html>、<body>、</body>标记,因为这将会影响在原JSP文件中同样的标记,这样做有时会导致错误。
  2、page指令。定义JSP文件中的全局属性,作用范围上整个JSP页面。
  主要的属性参数:language="java"、extends="supper class"、import="{引入java 类库}"、buffer=none/8kb/sizekb(其中8KB为默认值)、isThreadSafe=true/false、 isErrorPage=true/false、session=true/false、autoflush="true/false"、info= "information(可通过serverlet.getServerletInfo()得到"、errorPage="filename"、 contentType="mimetype"
  注:PAGE指令是页作用级的,不能在动态载入页面中使用,例:<%jsp:include%>
  其中的每一个属性(除IMPORT外)在页面中只能出现一次,其位置可以在页面的任何位置,但推荐放在页首。下面的包在JSP编译时已经导入了,所以你就不需要再指明了:
  java.lang.*;
  javax.servlet.*;
  javax.servlet.jsp.*;
  javax.servlet.http.*;
  3、taglib指令。定义一个标签库及自定义标签的前缀。
  语法:<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
  例子:

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
  <public:loop>
  ……
  ……
  </public:loop>
  描述:
  <% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。

  这里自定义的标签含有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。JSP元素是JSP语法的一部分,和XML一样有开始标记和结束标记。元素也可以包含其它的文本,标记,元素。比如,一个 jsp:plugin元素有<jsp:plugin>开始标记和</jsp:plugin>结束标记,同样也可以有< jsp:params>和<jsp:fallback>元素。

  你必须在使用自定义标签之前使用<% @ taglib %>指令,而且你可以在一个页面中多次使用,但是前缀只能使用一次。

  属性:
  uri="URIToTagLibrary"
  Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名。
  4、FORWARD指令。自动转向到其他页面静态或者动态。
  语法:<jsp:forward page=”url”/>
  或 <jsp:forward page=”url”>
  <jsp:parameter name=”parametername” value={“parametervalue”/<%=expression%>}/>
  </jsp:forward>
  <jsp:include page=filename%>包含一个静态或动态文件,对应的有两种引入方式:
  <1>、<jsp:include page=”url” flush=true/>
  <2>、<jsp:include page=”url” flues=true>
  <jsp:parameter name=”parametername” value=”parametervalue<%=expression%>”/>
  </jsp:include>
  例子:
  <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>
  <jsp:include>元素允许你包含动态文件和静态,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件动态的,那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似)。
  6、<jsp:getproperty>和JAVABEAN合用来获得JAVABEAN的属性值。
  用法:  <jsp:usebean id=”example” scope=”request/page/session/application” class=”packagename.classname”/>
  <jsp:getproperty name=”example” property=”name”/>
  在获取属性之前必须利用JAVABEAN来创建它
  7、<jsp:plugin>执行一个APPLET或BEAN
  语法: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>
  8、<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 id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</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"
  使用new关键字以及class构造器从一个class中示例一个bean.这个class不能是抽象的,必须有一个公用的,没有参数的构造器.这个package的名字区别大小写。

  type="package.class"
  如果这个Bean已经在指定的范围中存在,那么写这个Bean一个新的数据库类型 。如果你没有使用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 名字区分大小写。

5、JSP隐含对象
  与JSP语法相关的最后的元素是一些叫做“隐含对象”的东西。在JSP代码片段中,你可以利用这些隐含对象与JSP页面的代码片段执行环境产生互动。应尽量少访问这些内置隐含对象。但是,在一某些情况下,访问隐含对象是可被接受的。若要充分利用隐含对象,就需了解最新的Java Servlet API。
  下表列出可用的隐含对象集合。

  隐含对象说明
  request 客户端请求,包括从GET/POST请求传递过来的参数
  response 网页传回客户端的反应
  pageContext 在此管理网页属性
  session 与请求关联的会话
  application 代码片段的运行环境
  out 传送响应的输出流
  config 代码片段配置对象
  page JSP网页本身
  exception 有错的网页中未被捕获的例外

  这些都是用来做什么的,你又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行JSP代码的代码片段。用不着深入了解太多的Servlet API细节,我们来看看能用它们来做到的某些事情:

  你可以不用表达式,直接进入“Out”隐含对象,将某些内容输出到响应中:
  <% out.println("Hello"); %>。
  用不着把一个参数直接送到JavaBean,你可以从请求对象获取参数值:
  <% String name=request.getParameter("name"); out.println(name); %>.

  在你用JSP进行开发的过程中,进行更多的开发的过程中,如果创建了JavaBeans或发现JSP文件中加入了太多的Java源代码,你就需要创建起支持作用的Java分类(class)了,它可以协助你重复利用源代码并减少JSP网页编译时间。当你需要创建Java分类文件时,你必须:

  将JDSWK installation\bin目录添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。
  用这个命令将JAR文件复制到“\jre\lib\ext:”目录中: copy c:\jswdk-1.0.1\lib\servlet.jar c:\jdk1.2.2\jre\lib\ext.

  创建一个JSP网站
  现在该是把所有这些JSP语法派上用场的时候了。我们将创建一个网页,它有一个输入表单,可以使用户输入一个股票代号以获得出当前股价(有20分钟)。如果输入有误,则显示报错网页。

  quote.jsp
  首先,用 这个代码 创建一个quote.jsp网页并将其保存在JSWDK安装目录下的网页目录中。大多数的网页是标准的HTML,其间散布着JSP代码。第六行是一个网页指示,表示将把所有错误发送到“errorPage.jsp”文中。第13到15行是一个脚本片段,主要说明只有提供“符号”参数才会显示表格。 “If”代码段在32到34行结束。第17行定义了要用的JavaBean,第18行从参数加载JavaBean的符号属性。第27行到29行显示 Bean的属性。除了"if "代码段,实际上并不涉及其它Java代码。

  errorPage.jsp
  下一步,将下列JSP源代码保存到网页目录中的“errorPage.jsp”文件中。“这是一个错误网页”的提示为第一行,它将isErrorPage 网页提示属性设置为真。上一页说了明错误网页的位置,本页则说明这就是错误网页。其它JSP文件中的JSP专用代码只有访问隐含例外对象才用到。网页只显示其值:

  <%@ page isErrorPage="true" %>
  <html>
  <head>
  <title>Error Page</title>
  </head>
  <body>

  <h1>Our Error Page</h1></font>

  <!-- Print Exception -->
  We got ourselves an exception:
  <%= exception %>
  <a href="quote.jsp">Restart</a>
  </body>
  </html>

  Quotes.java
  Quotes JavaBean 利用Yahoo资源来获得股票价格。需要将此 资源保存到JSWDK安装目录下“classes\com\jguru”目录中的“quotes.java”文件中。请在此用JSDK中的Javac编辑器来编辑它。

  你的第一个JSP网页。
  创建了这两个JSP文件,建立了JavaBean资源文件并编辑了它后,你就可以从http://localhost:8080/quote.jsp 载“quote.jsp”文件以查看结果,假设你没有更改JSWDK安装设置,转而使用别的端口。这个网页当然能做得更漂亮,但是它已实现了需要实现的功能,并且很好地展示了JSP的功能。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册