⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 64.html

📁 写给JSP初级程序员的书
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<BR><BR>  }
<BR><BR>  %&gt;
<BR><BR>  注释部分和HTML的注释相似,当在执行的时候JSP引擎将去掉对注释的解释。这就意味着JSP注释并不返回到用户的浏览器中。不象HTML注释被定义在&lt;!-和 --&gt;标签之间,JSP注释被定义在&lt;%--和 --%&gt;之间。例如:
<BR><BR>  &lt;%-- Check for AM or PM --%&gt;
<BR><BR>  
        <span class="name00">
<font color="#FF3300">一个开发人员眼中的JSP技术(下)</font><br></span>
<span class="Name01">
<font color="#666666">(作者:天译编译 2000年12月01日 14:26)</font></span><br><br>
<span class="content">    <strong>使用定制化的标签</strong>
<BR>
  尽管你可以在JSP页面中植入Java代码并在服务器方执行,但是,JSP也支持使用定制标签来插入动态内容,它有一种机制可以让你在JSP页面中插入你自己的、与HTML类似的标签。换句话说,你的JSP网页能够使用插入Java代码的简单标签语法产生动态的内容。但定制标签的用处不是很大。
<BR><BR>  创建一个定制标签比在JSP网页中使用简单的scriptlet要复杂得多,因为定制标签需要用几个步骤来把你的Java组件和JSP代码连接起来。不过,定制标签在分发和重复使用的时候就非常简单了。对定制标签的支持将在JSP创建工具中实现。
<BR><BR>  在下面的例子中产生动态内容的JSP网页就使用了定制标签。注意,在这个例子中我们不再需要引入Java类、声明变量或写任何Java代码:
<BR><BR>  &lt;HTML&gt;
<BR><BR>  &lt;%@ taglib uri=&quot;/tlds/menuDB.tld&quot; prefix=&quot;menu&quot; %&gt;
<BR><BR>  &lt;H1&gt;Today's Menu&lt;/H1&gt;
<BR><BR>  &lt;P&gt;Lunch&lt;/P&gt;
<BR><BR>  &lt;%@ include file=&quot;lunch_menu.html&quot; %&gt;
<BR><BR>  &lt;P&gt;Our Special of the Day&lt;/P&gt;
<BR><BR>  &lt;menu: insertCatchOfDay meal=&quot;lunch&quot; &gt;
<BR><BR>  &lt;/HTML&gt;
<BR><BR>  从上面的语句中我们可以看出,这个页面明显比前面的scriptlet例子要简单许多,因为它没有包含初始化对象和执行相应的方法。但是JSP网页代码仅仅只是一部分;对于每一个定制标签,还包括下面的三个组件:
<BR><BR>  (1)包含定制标签的网页,比如说,上面的代码片断中就使用了insertCatchOfDay 的定制标签。在使用定制标签之前,页面必须指定Taglib Directive来提供标签库描述符(对标签定义)的位置。当执行定制标签的时候,网页还有代表性的定义了一个和多个标签属性(比如在这个例子中的“meal”)来确定动态内容。
<BR><BR>  (2)标签库描述符。它是一个定义了定制化标签并把它和Tag Handler连接起来的XML文件。一个标签库描述符包含了标签的不同属性,相关Tag Handler的名称(位置)以及JSP引擎需要处理定制标签的其他信息。
<BR><BR>  (2)Tag Handler。 它是一个与定制标签联合执行操作的Java类。例如,在上面的insertCatchOfDay标签中,Tag Handler就是执行数据库查询得到相应菜单项的Java类。
<BR><BR>  我们已经看到了一个使用定制标签的JSP网页,下面让我们来看一看另外的两个组件。
<BR><BR>  Tag Handler
<BR><BR>  tag handler是一个与servlet比较相似的Java类。但是servlet能够执行Servlet接口,还能够被HTML GET或POST请求所执行。tag handler也能够执行一个标签接口(javax.servlet.jsp.Tag)以及在定制标签被JSP引擎处理的时候执行。
<BR><BR>  如果定制标签包含了属性,那么tag handler就必须定义这些属性以及每一个的get/set方法。例如,当定义上面insertCatchOfDay定制标签的tag handler的时候,我们必须定义“meal”属性和与它相关的get和set 方法:
<BR><BR>  private String meal = null;
<BR><BR>  public void setMeal(String s) {
<BR><BR>  meal = s;
<BR><BR>  }
<BR><BR>  public String getMeal() {
<BR><BR>  return meal;
<BR><BR>  }
<BR><BR>  Tag Library Descriptor
<BR><BR>  如果你所有的时间都在处理Java技术而不知道关于 XML方面的东西,那么标签库描述符组件可能看起来会比较陌生。但是你也不需要担心,因为你不需要学习一门新的编程语言。标签库描述符仅仅使用与HTML相似的标签语法来定义定制标签的名字和属性,这更象定义一个对象。
<BR><BR>  下面的标签库描述符定义了insertCatchOfDay标签。注意,这个文件定义了定制标签的名称,属性和相关的Tag Handler类:
<BR><BR>  &lt;? xml version=&quot;1.0&quot; ?&gt;
<BR><BR>  &lt;taglib&gt;
<BR><BR>  &lt;tag&gt;
<BR><BR>  &lt;name&gt;insertCatchOfDay&lt;/name&gt;
<BR><BR>  &lt;tagclass&gt;com.sun.CatchOfDayHandler&lt;/tagclass&gt;
<BR><BR>  &lt;info&gt;
<BR><BR>  Queries menu database for the catch of the day。
<BR><BR>  &lt;/info&gt;
<BR><BR>  &lt;attribute&gt;
<BR><BR>  &lt;name&gt;meal&lt;/name&gt;
<BR><BR>  &lt;/attribute&gt;
<BR><BR>  &lt;/tag&gt;
<BR><BR>  &lt;/taglib&gt;
<BR><BR>  与定义属性的名称一样,标签库描述符也能够定义数据类型并指定其属性(无论是否需要);在Tag Handler被执行之前,它允许JSP引擎去做某些错误检查。还有其他的信息,比如说为了使用JSP创建工具,库名和版本号也可以包含在标签库中。
<BR><BR>    <strong>更多的例子</strong>
<BR>
  在下面的例子中,第一个例子在JSP页面中使用了HTTP请求对象 (HttpServletRequest) 来判断用户浏览器的版本并从三个HTML页面中的一个中返回相应的内容:
<BR><BR>  &lt;!-- example1.jsp --&gt;
<BR><BR>  &lt;%@ page language==&quot;java&quot; info=&quot;Example JSP #1&quot; %&gt;
<BR><BR>  &lt;html&gt;
<BR><BR>  &lt;body&gt;
<BR><BR>  &lt;%! String agent; %&gt;
<BR><BR>  &lt;%
<BR><BR>  agent = request.getHeader(&quot;User-Agent&quot;);
<BR><BR>  if ( agent.startsWith(&quot;Mozilla/4.0&quot;) {
<BR><BR>  %&gt;
<BR><BR>  &lt;%-- Return content for 4.0 browsers --%&gt;
<BR><BR>  &lt;%@ include file=&quot;ver4.html&quot; %&gt;
<BR><BR>  &lt;%
<BR><BR>  }
<BR><BR>  else if ( agent.startsWith(&quot;Mozilla/3.0&quot;) {
<BR><BR>  %&gt;
<BR><BR>  &lt;%-- Return content for 3.0 browsers --%&gt;
<BR><BR>  &lt;%@ include file=&quot;ver3.html&quot; %&gt;
<BR><BR>  &lt;%
<BR><BR>  }
<BR><BR>  else {
<BR><BR>  %&gt;
<BR><BR>  &lt;%-- Return content for other/unknown browsers --%&gt;
<BR><BR>  &lt;%@ include file=&quot;other.html&quot; %&gt;
<BR><BR>  &lt;%
<BR><BR>  }
<BR><BR>  %&gt;
<BR><BR>  &lt;/body&gt;
<BR><BR>  &lt;/html&gt;
<BR><BR>  注意:此页面无须声明或初始化HTTP请求对象就可以直接对它进行访问。请求和响应(HttpServletResponse)对象都能够隐含地在JSP 页面中使用。和servlet一样,JSP页面能够使用请求对象从HTML窗体中获得参数值。
<BR><BR>  &lt;!--example2.jsp --&gt;
<BR><BR>  &lt;%@ page language=&quot;java&quot; info=&quot;Example JSP #2&quot; %&gt;
<BR><BR>  &lt;html&gt;
<BR><BR>  &lt;body&gt;
<BR><BR>  &lt;%@ include file=&quot;header.html&quot; %&gt;
<BR><BR>  &lt;jsp:useBean id=&quot;db&quot; class=&quot;DbBean&quot; /&gt;
<BR><BR>  &lt;%! String selections[], info; %&gt;
<BR><BR>  &lt;p&gt;Here are your current selections:&lt;/p&gt;
<BR><BR>  &lt;%
<BR><BR>  &lt;!-- Get the form parameter values --&gt;
<BR><BR>  selections = request.getParameterValues(&quot;items&quot;);
<BR><BR>  if (selections != null) {
<BR><BR>  %&gt;&lt;ul&gt;
<BR><BR>  &lt;%
<BR><BR>  for(int x = 0; x &lt; selections.length; x++) {
<BR><BR>  %&gt;&lt;li&gt;
<BR><BR>  &lt;%= selections[x] %&gt; : &lt;%= db.getInfo(selections[x]) %&gt;
<BR><BR>  &lt;%
<BR><BR>  }
<BR><BR>  %&gt;&lt;/ul&gt;&lt;%
<BR><BR>  }
<BR><BR>  else {
<BR><BR>  %&gt;
<BR><BR>  &lt;p&gt;(no items selected)&lt;/p&gt;
<BR><BR>  &lt;%
<BR><BR>  }
<BR><BR>  %&gt;
<BR><BR>  &lt;br&gt;
<BR><BR>  &lt;%@ include file=&quot;footer.html&quot; %&gt;
<BR><BR>  &lt;/body&gt;
<BR><BR>  &lt;/html&gt;
<BR><BR>  在这个例子中,当每一个参数值都被读取以后,JavaBean组件便查询所需要的信息。在JSP网页中使用Bean这种方法可以容易地从数据库中返回动态web内容。
<BR><BR>    <strong>结论</strong>
<BR>
  如果你正在寻找一种能简便建立连接服务器方Java组件的web程序的方法,那么JavaServer Page正是你所需要的。除了EJB,RMI,JDBC和JavaBean外,分离HTML表述代码和web程序,也使得JSP网页组织起来运行变得更容易了。事实上,由于web设计人员几乎无须Java开发人员的帮助就可以建立JSP页面,所以你再也不同担心创建web网页和写HTML代码了。   
        </td>
      </tr>
    </td>
  </tr>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -