使用NetBeansIDE创建并运行一个简单的web应用程序

在本教程中,您将使用 NetBeans IDE 创建并运行一个简单的 web 应用程序,Hello Web。本示例应用程序要求您输入一个名字,之后使用那个名字显示一条信息。首先,您需要使用一个输入框来实现这个页面。之后您使用一个用户可以选择名字的下拉列表来替换那个输入框。下拉列表中输入的名字来自数据库表。

本教程需要以下技术以及资源的支持

JavaServer Faces 组件/Java EE 平台 1.2 with Java EE 5*1.1 with J2EE 1.4 Travel 数据库 (已安装) 需要

* 为了充分利用 NetBeans 6.0 中 Java EE 5 的性能,使用一个完全适用于 Java EE 5 规范的应用程序服务器, 比如 Sun Java System Application Server 9( GlassFish 项目)。

如果您在使用 MySQL 数据库,参见 FAQ 在 NetBeans IDE 6.0 中如何打开 MySQL 的示例数据库 Tavel 获得适当的指示。

本教程按照使用 GlassFish v2 Application Server 的规格制作。 如果您在使用一个不同的服务器,参阅 发布文档 以及 FAQs 获得已知出现的问题以及工作背景。 更多有关支持的服务器以及 Java EE 平台的信息,参阅 发布文档。

教程需求

在您开始之前,请确定您已经检查了本节的需求。

本教程需要的软件

在您开始之前,您需要安装一下软件到您的计算机上:

带有 Web 与 Java EE 特性的 NetBeans IDE 6.0 (包含 Web 与 Java EE 以及所有版本的下载)。

创建一个项目

在主菜单中,选择“文件” > “新项目”。

“在新项目向导”中,从列表里选择“ Web ”然后从“项目”列表中选择“ Web 应用程序”。单击“下一步”。

将项目命名为 HelloWeb 然后单击“下一步”。

选择“ Visual Web JavaServer Faces 框架”并单击“完成”。

您的项目将被创建,并且在“可视化设计器”中打开了初始页面 (Page1) 。 设计一个页面

在开始之前,请您设计一个页面如下图所示。

图 1:Page1 的设计

在“属性”窗口里,如下图所示在 Title 属性文本框中输入 Hello Web 。

当此页面(或者项目)发布的时候 Title 的属性值将显示在浏览器的标题栏中。

图 2::“属性”窗口中的“页面属性”

提示: 您可以通过在“可视化设计器”或者“导航”窗口中选择组件的方式访问“属性”窗口中的组件的属性。 如需打开“导航”窗口,选择“窗口” > “导航” > “导航器”。

您可通过单击页面上的空白区域访问页面属性。

如果“面板”窗口中的“基本组件”节点没有展开的话,请现在展开它。

在示例中您用到的所有组件均在面板的“基本组件”中。

如果“面板”是隐藏的,请选择“窗口” > “面板”以显示它。

从“面板”中从“基本组件”里拖一个“标签”组件放置在“可视化设计器”中页面的左侧, 输入 Name: 并按“回车”键。

请注意组件是在页面中与网格自动对齐的。 并请注意在“属性”窗口中 text 将属性的值改变为 Name:。

提示: 您可以通过右键单击组件从弹出菜单中 选择“编辑标签文本”来进入编辑模式。

从“面板”的“基本组件”中向“可视化设计器”上拖拽一个“文本框”组件,输入 Enter Your Name, 然后按“回车”键。

在“属性”窗口中,把文本框的 id 属性的值 textField1 更改为 nameField。

选择标签组件,按住 Ctrl-Shift 将标签组件拖动到“文本框”组件。

请注意标签组件的 for 属性现在被设定为 nameField。

将“按钮”组件拖动到“文本框”组件的右边,输入 Say Hello ,并按“回车”。

特别注意: 这里有一个已知的问题影响 JSF 1.2 “按钮”组件在 IE7 中的宽度。 工作区中把“按钮”组件放置在“布局”组件(网格面板,组面板,或者布局面板)里。 调整“布局”组件的大小可以自动的更改“按钮”组件的大小。

在“属性”窗口里,在按钮控件的 id 属性中将其值 button1 改为 helloButton。

拖动一个“静态文本”组件,将其放置在标签组件的下面。

把“静态文本”组件的 id 属性中将其值 staticText1 改为 helloText。

拖动一个消息组组件放置在页面的一个偏远的地方,比如放在“静态文本”组件下面。

添加一个消息组组件,可以在其他消息类型中显示运行时错误,对诊断错误十分有帮助。

在编辑工具栏中,单击 JSP 按钮切换到 JavaServer Pages (JSP) “源代码编辑器”。

查看代码并注意您在“属性”窗口中做的更改均已被保存。 当页面第一次在浏览器中显示的时候,页面显示的是 JSP 页面中标签的内容。 如果您的页面的 Bean 通过更改属性值而产生代码,这种改变只能在页面被提交或者 随后的重新显示后才发生变化。 添加一些行为

本节中,您将添加代码使得页面重新显示为 Hello entered-name 的一段消息。 您添加一个事件处理,令随时按钮被单击时让应用程序执行。这个事件处理将“静态文本”组件的 text 属性设置为一个 “hello” 的消息,并令页面重新加载使得这个文本显示出来。

在“编辑”工具栏中,单击“设计”切换至“可视化编辑器”。

双击“按钮”组件。

编辑区域切换到“ Java 编辑器”,显示出 Page1 页面的 Bean。 按钮的事件处理 helloButton_action 已经添加到这个页面的 Bean 中。

将 helloButton_action 函数的主体部分替换为下列代码(显示为 粗体) ,然后按 Alt-Shift-F 重定代码格式。

代码示例 1: helloButton_action() 代码

public String helloButton_action() {    String name = (String)nameField.getText();    helloText.setText("Hello, " + name + "!");    return null;

在代码段粗体 显示的第一行为“文本框”组件 nameField 使用 getText 函数获取 text 属性的值。 这个值是 Object 类型的一个对象,但这里需要为字符串,这样 这个值被转换成 String 对象。然后该对象被分配给 name 变量。

在代码段粗体显示的第二行设置“静态文本”组件 helloText 的 text 属性的值。这个值包含了用户向文本框控件 nameField 输入 的名称。举个例子,如果用户输入 Fred, 这行代码将设置“静态文本”组件的 text 属性 为 Hello, Fred! 运行应用程序

在“ Java 编辑器”中,确保您的 Java 代码没有包含任何错误。

错误以红色下划线或者代码左边的红色方块所表示。 您的项目如果在代码中出现错误将无法生成应用程序。

提示:将光标停放在代码左侧的红色方块上,这样就可以 看到错误的描述。

单击“运行主项目”按钮 。

IDE 保存您的文件并且生成您的项目的应用程序。“生成输出”窗口 出现在屏幕的下方,并显示相关的状态信息。一旦您的应用程序被 生成并发布,IDE 将打开您默认的网页浏览器 (如果浏览器没有被打开的话),您的 Web 应用程序便显示出来。

在文本框中输入您的名字,单击“ Say Hello ”。

“Hello your name” 在下方显示。

浏览器将表单提交给执行您的 Web 应用程序的 Web 服务器。 应用程序执行按钮的行为函数,更新页面元素,将改变的数据 重新交给相同的页面,并且将页面发送回 Web 浏览器中。 下图显示的是提交姓名为 Gus Townsend的结果。

图 3: Hello Web 的运行结果

将文本框替换为下拉列表

本教程余下的部分展示了如何使用“下拉列表”组件获取用户的输入来替代“文本框”,如下图所示。 这个“下拉列表”组件从数据库表 PERSON 绑定的所选项中获取列表。

图 4: Hello Web 的最终版本

在“编辑”工具栏中,单击“设计”切换到“可视化设计器”。

在“可视化设计器”中,右键单击“文本框”组件 nameField ,并从弹出菜单中选择“删除”。

从“面板”上的“基本组件”中拖拽一个“下拉列表”组件放置在您在“可视化设计器”的页面中。 移动该组件,放置在之前“文本框”组件的区域里。

请注意,如下图所示,“导航器”窗口展示了 dropDown1 组件以及 dropDown1DefaultOptions 对象。 该“下拉列表”组件的 items 属性识别包含列表中的选项的对象。 当您在页面中添加“下拉列表”组件时, IDE 同时创建了一个“默认选项”对象 (dropDown1DefaultOptions), 并将这个对象设置为“下拉列表”组件的 items 属性的值。 只有“下拉列表”组件在“可视化设计器”中可见。 “默认选项”仅仅提供了列表里出现的选项。在其后的教程中,您可以 修改“下拉列表”组件,使它从不同的源中获取选项。

图 5:“导航器”窗口中的组件

在“属性”窗口中,更改组件的 id 为 nameDropDown.

选择“标签”组件,按住 Ctrl-Shift 从“标签”组件拖动到“下拉列表”组件。

请注意,“标签”组件的 for 属性现在为 nameDropDown。 将下拉列表与数据库表绑定

在 IDE 工作区左侧显示的“服务”窗口,包含了一个“数据库”节点。 “数据库”节点显示所有已经在 IDE 中添加了的数据库驱动以及链接。

NetBeans IDE 中有一个示例数据库: Travel 。 Travel 数据库出现在“数据库”节点的下面。 在教程的本节中,您将使用 Travel 数据库中的 PERSON 表来提供“下拉列表”组件的选项。

在“服务”窗口中,展开“数据库”节点, 查看 Travel 数据库是否已经连接。

如果 TRAVEL 数据库的 JDBC 节点标志是损坏的,您将无法展开此节点。 IDE 并没有连接上数据库。 则链接数据库,右键单击 TRAVEL 的 JDBC 节点 并从弹出菜单中 选择“链接”。输入密码为 travel ,选择“在此会话中保存密码”,单击“OK”。 如果您没有看到 TRAVEL 数据库的 JDBC 节点,参阅“ NetBeans 安装指南”获取如何在 IDE 中令数据库可用的相应信息。

展开 TRAVEL 数据库的“表”节点。

在“表”下面,您能够看到数据库中为每一个表提供的节点,比如 CARRENTAL 以及 FLIGHT 。 下图展示了“服务”窗口中的“表”节点。(译者注:原文为 Runtime window ,但由图理解后认为更改其为“服务”窗口更为贴切)

图 6:“服务”窗口

从“服务”窗口中拖动 PERSON 放到“下拉列表”上。

列表的显示将从 item 1 变为 abc, 表明列表在显示的是绑定的数据,并且被显示的这些数据的类型是 String。

IDE 为数据库表添加了一个非可视化的“ personDataProvider ”组件。 “ personDataProvider ”组件出现在“导航器”窗口中。 同时 IDE 也添加了一个 personRowSet 属性到 SessionBean1 里。

右键单击“下拉列表”,在弹出菜单中选择“绑定数据”。 “绑定数据”对话框出现,如下图所示。

图 7: “下拉列表”中绑定数据

当您将数据绑定在“下拉列表”组件时,您必须详细说明列表(显示区域)中显示什么 并且您必须详细说明下面的程序(值区域)使用什么值。比如说,您需要显示数据库表中的 一些有意义的值,比如一个人的姓名,但是您需要在使用下面程序中的一个独特的识别符, 比如人的 ID 。但是在本应用程序中,您需要将“值”区域和“显示区域”绑定在同一数据库列:PERSON.NAME 上, 在其后的一步进行了描述。(译者注:原文为 next two steps,可是下面只有一步,故做更改)。

在对话框中,将“值”区域设置为 PERSON.NAME,“显示”区域设置为 PERSON.NAME,然后单击“OK”。

添加一些行为

在“可视化设计器”中,双击“按钮”组件。

“编辑区域”切换到“ Java 编辑器”中,并移动到 helloButton_action 函数。

用以下代码(显示为加粗)替换 helloButton_action 的函数体

代码示例 2: helloButton_action 的替换代码

public String helloButton_action() {    String name = (String)nameDropDown.getSelected();    String splitnames[] = name.split(",");    helloText.setText("Hello, " + splitnames[1] + "!");    return null;

第一行使用了 getSelected 函数获取当前“下拉列表”的值,即当前在列表中选中的名字。

因为数据是以 lastname , firstname 的方式存储的, 在显示之前必须进行修改。否则,应用程序将打印出 “Hello, lastname, firstname!”。 第二行使用 split 函数来讲字符串分割到一个数组里面,以逗号作为分隔符。 数组的第一个项目(在0位置上)包含姓名的名,在1位置上包含着姓名的姓。

在第三行,“静态文本”组件的 text 属性被设置为一个包括姓氏的值。

注意: 这个函数假定所有在数据表里的值都是 遵循 lastname, firstname 格式的。您无法强制其解决不符合这个格式的字符串。

添加下列代码到 prerender 函数中。这些代码设置了列表中第一项为默认选项。

代码示例 3: prerender 函数代码

public void prerender() {    // 如果没有选项,则设置默认选项    if (nameDropDown.getSelected() == null) {      personDataProvider.cursorFirst();      nameDropDown.setSelected          ((String)personDataProvider.getValue("person.name"));    }  }

运行应用程序

单击“运行主项目”按钮。

IDE 生成和发布应用程序,并在 Web 浏览器中显示此页面。

从列表中选择一个名字然后单击“ Say Hello ”。

浏览器将下拉列表中选定的值发送给服务器,服务器执行按钮的 helloButton_action 方法函数。 更多尝试

尝试去做。“列表”组件与“下拉列表”组件很相似。 请尝试将“下拉列表”组件替换为“列表”组件。 在本应用程序中,“列表”组件的 multiple 属性不能被选中,因为 每一次只能选择一个选项。请记住将“列表”组件与数据库表绑定 并更改 helloButton_action 方法,得到“列表”所选择的值。

尝试去做。 请使用您在本教程中学到的相似的步骤,尝试 建立一个 Web 应用程序,包含一个显示所有 TRIPTYPE 表中的 DESCRIPTION 的值的“下拉列表”。 当用户点击 Show Type Id 按钮时,能够有一个页面来显示 trip type 的 TRIPTYPEID。 为了完成此工作,您必须将“下拉列表”组件中的显示域与 TRIPTYPE.DESCRIPTION 绑定, 以及该组件的值域与 TRIPTYPE.TRIPTYPEID 绑定。

总结

在 IDE 中涉及一个网页的经典工作流程包含如下步骤:

创建页面。

在页面上放置组件,如“文本框”组件以及“按钮”组件。

编辑组件的属性来更改其外表以及行为。

将数据连接与相关合适的组件绑定。

编辑 Java 源代码来控制服务端行为,如事件控制。

生成并测试您的应用程序。

一个人最大的破产是绝望,最大的资产是希望。

使用NetBeansIDE创建并运行一个简单的web应用程序

相关文章:

你感兴趣的文章:

标签云: