📄 j-scwcd-11-8.html
字号:
</TR>
<TR>
<TD bgcolor="#ffffff" height="1" width="150"><IMG src="../i/c.gif" width="150" height="2"></TD>
</TR>
</TABLE>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><font size="-1" face="Verdana, sans-serif"><a href="/developerWorks/cn/index.shtml">developerWorks 中国网站</a> : <a href="/developerWorks/cn/java/index.shtml">JAVA</a> : <a href="/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle?OpenView&Count=50">教学 - 在线教程</a></font>
<br>
<img alt="Java 认证成功之路,第 2 部分:SCWCD" src="imagemaster/masthead.jpg"></td><td width="*" valign="bottom" align="right"><a border="0" href="j-scwcd.zip"><img alt="下载 ZIP 文件" border="0" src="../i/icon-zip.gif"></a><a target="_blank" href="../tutorial_eng/index.html" border="0"><img alt="英文原文" border="0" src="../i/icon-source.gif"></a>
</td>
</tr>
<tr>
<td height="2" colspan="2"><img height="2" width="1" src="../i/c.gif"></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="topmain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index11.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="topsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="j-scwcd-15-3.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="topfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="j-scwcd-11-7.html"><img alt="上页" border="0" src="../i/previous.gif" name="topprevious"></a></TD><TD background="../i/sw-gold.gif"><img border="0" src="../i/xnext.gif"></TD>
</TR>
<TR>
<TD width="100%" colspan="5"></TD><TD width="108" height="1" bgcolor="#000000" align="right"><IMG alt="" height="1" width="108" src="../i/c.gif"></TD>
</TR>
<TR>
<TD colspan="5"></TD><TD align="right"><a border="0" onMouseOver="iOver('topnextsection'); iOver('bottomnextsection'); self.status=nextsectionblurb; return true;" onMouseOut="iOut('topnextsection'); iOut('bottomnextsection'); self.status=''; return true;" href="j-scwcd-12-1.html"><img alt="下一章" src="../i/nextsection.gif" border="0" name="topnextsection"></a></TD>
</TR>
</TABLE>
<table bgcolor="ffffff" cellspacing="0" cellpadding="2" border="0" height="400" width="100%">
<tr valign="bottom">
<a name="navskip"></a><td height="25" colspan="4"><img alt="11.使用 JavaBean 组件开发 JSP 页面" src="imagemaster/titlebar11.jpg" border="0" height="25" width="562"></td>
</tr>
<tr>
<td bgcolor="ffffff" width="15"> </td><td bgcolor="ffffff" width="12"> </td><td valign="top" align="left" bgcolor="ffffff" width="*">
<p>
<br>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="90%"><font size="4" face="Verdana, Arial, Helvetica"><b>示例问题</b></font></td><td width="200" align="right"><font size="1" face="Verdana, Arial, Helvetica"><nobr> 第 8 页(共8 页)</nobr></font></td>
</tr>
</table>
<br>
<br>
</p>
<font size="2" face="Verdana, Arial, Helvetica"><b>问题 1:</b>
<p>用户在 Web 应用程序中填写表单。然后把信息存储在 JSP 页面使用的 JavaBean 组件中。JSP 页面的前两行代码是:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
<jsp:useBean id="userBean" class="myapp.UserBean" scope="request"/>
<jsp:setProperty name="useBean" //XXX />
</code>
</pre>
<p>应该把下面哪项放到位置 //XXX,用于把所有的表单元素值解析到相应的 JavaBean 组件属性(假设表单输入元素在 JavaBean 组件中具有相应变量 —— 具有相同名称)?</p>
<p>
<b>选择:</b>
</p>
<ul>
<li>
<b>A.</b> <code>param="*"</code>
</li>
<li>
<b>B.</b> <code>param="All"</code>
</li>
<li>
<b>C.</b> <code>property="*"</code>
</li>
<li>
<b>D.</b> <code>property="All"</code>
</li>
<li>
<b>E.</b> 以上都不是</li>
</ul>
<p>
<b>正确答案:</b>
</p>
<ul>
<li>
<b>C</b>
</li>
</ul>
<p>
<b>说明:</b>
</p>
<p>
<code>jsp:setProperty</code> 动作与 <code>jsp:useBean</code> 动作联合使用,以便设置 JSP 页面使用的 bean 属性的值。也可以像下面那样设置 JavaBean 组件的属性:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
<jsp:setProperty name="myBean" property="name" value="<%=expression %>" />
</code>
</pre>
<p>当开发 bean 用于处理表单数据时,通过把 bean 属性的名称与表单输入元素的名称匹配,可以遵循常见的设计模式。也需要为 bean 中的每个属性定义相应 getter/setter 方法。其中的优点是,现在可以告诉 JSP 引挚,解析来自 <code>request</code> 对象中的 HTML 表单元素的所有传入值,然后用一条语句,把它们赋予它们对应的 bean 属性,像下面这样:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
<jsp:setProperty name="user" property="*" />
</code>
</pre>
<p>通过一个称为 <i>内省</i> 的过程,该运行时魔法(runtime magic)是可能的,内省让类在请求上公开它的属性。内省是由 JSP 引挚管理,通过 Java 反射机制实现的。当处理包含大量输入元素的复杂表单时,独自使用该特性就可以解决问题。</p>
<p>如果 bean 属性的名称不匹配表单输入元素的名称,仍可以把它们显式映射到您的属性,办法是把参数命名为:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
<jsp:setProperty name="user" property="address" param="parameterName" />
</code>
</pre>
<p>因此选项 A、B、D 和 E 是不正确的,选项 C 是正确的。</p>
<p>
<b>问题 2:</b>
</p>
<p>对于使用 <code>java.sun.com.MyBean</code> JavaBean 组件的JSP 页面,下面 <code><jsp:useBean></code> 标签的哪个用法是正确的?</p>
<p>
<b>选择:</b>
</p>
<ul>
<li>
<b>A.</b> <code><jsp:useBean id = "java.sun.com.MyBean" scope="page" /></code>
</li>
<li>
<b>B.</b> <code><jsp:useBean id = "MyBean" class="java.sun.com.MyBean" /></code>
</li>
<li>
<b>C.</b> <code><jsp:useBean id = "MyBean" type = "java.lang.String" scope="page" /></code>
</li>
<li>
<b>D.</b> <code><jsp:useBean id = "MyBean" beanName="java.sun.com.MyBean" scope="page" /></code>
</li>
<li>
<b>E.</b> <code><jsp:useBean id = "MyBean" beanName="java.sun.com.MyBean" className="MyBean" type = "java.lang.String" scope="page" /></code>
</li>
</ul>
<p>
<b>正确答案:</b>
</p>
<ul>
<li>
<b>B</b> 和 <b>C</b>
</li>
</ul>
<p>
<b>说明:</b>
</p>
<p>
<code>jsp:useBean</code> 动作把指定作用域和变量中定义的,并可用指定的 <code>id</code> 使用的 Java 编程语言对象的实例,与相同 <code>id</code> 的新声明脚本变量关联。</p>
<p>
<code>jsp:useBean</code> 动作的语法如下:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
<jsp:useBean id="name" scope="page|request|session|application" beandetails />
</code>
</pre>
<p>其中,<code>beandetails</code> 可以是下面之一:</p>
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
class="className"
class="className" type="typeName"
beanName="beanName" type="typeName"
type="typeName"
</code>
</pre>
<p>各种属性的描述是:</p>
<ul>
<li>
<code>id</code>:用于标识对象实例的名称(区分大小写)。<br>
<br>
</li>
<li>
<code>scope</code>:引用可用的作用域。默认值是 page。<br>
<br>
</li>
<li>
<code>class</code>:完全限定(包括包名)类名称。<br>
<br>
</li>
<li>
<code>beanName</code>:Bean 的名称,您将把它提供给 <code>java.beans.Beans</code> 类中的 <code>instantiate()</code> 方法。属性也可以是请求时表达式。<br>
<br>
</li>
<li>
<code>type</code>:这个可选的属性指定了类的类型,并遵循标准的 Java 编程转换规则。类型必须是一个父类、接口或类本身。默认值与 class 属性的值相同。</li>
</ul>
<p>从上面的规则,我们可以说:</p>
<ul>
<li>class 或 type 必须存在一个。因此,选项 A 是不正确的,选项 B 和 C 是正确的。</li>
<li>如果存在,<code>beanName</code> 必须伴有 <code>type</code>。因此,选项 D 是不正确的。</li>
<li>
<code>beanName</code> 和 <code>class</code> 不能同时存在,因此,选项 E 也是不正确的。</li>
</ul>
<br>
</font></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD align="right" colspan="6"><a border="0" onMouseOver="iOver('topnextsection'); iOver('bottomnextsection'); self.status=nextsectionblurb; return true;" onMouseOut="iOut('topnextsection'); iOut('bottomnextsection'); self.status=''; return true;" href="j-scwcd-12-1.html"><img alt="下一章" src="../i/nextsection.gif" border="0" name="bottomnextsection"></a></TD>
</TR>
<TR>
<TD width="100%" colspan="5"></TD><TD width="108" height="1" bgcolor="#000000" align="right"><IMG alt="" height="1" width="108" src="../i/c.gif"></TD>
</TR>
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="bottommain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index11.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="bottomsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="j-scwcd-15-3.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="bottomfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="j-scwcd-11-7.html"><img alt="上页" border="0" src="../i/previous.gif" name="bottomprevious"></a></TD><TD background="../i/sw-gold.gif"><img border="0" src="../i/xnext.gif"></TD>
</TR>
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
</TABLE>
<TABLE width="100%" cellpadding="0" cellspacing="0" border="0">
<TR>
<TD width="100%">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><img alt="" height="1" width="1" src="../i/c.gif"></td>
</tr>
<tr valign="top">
<td class="bbg" height="21"> <a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/index.shtml">关于 IBM</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/privacy/index.shtml">隐私条约</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/legal/index.shtml">法律条款</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/contact/index.shtml">联系 IBM</a></td>
</tr>
</table>
</TD>
</TR>
</TABLE>
<script src="//www.ibm.com/common/stats/stats.js" language="JavaScript1.2" type="text/javascript"></script>
<noscript>
<img border="0" alt="" height="1" width="1" src="//stats.www.ibm.com/rc/images/uc.GIF?R=noscript"></noscript>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -