本文将给大家介绍在JBuilder 9 集成开发环境下,如何运用Struts Framework来开发Web 应用程序,我们这里所说的JBuilder9是指JBuilder 9 Developer 与 Enterprise两个版本。
一、JBuilder 对于 Struts 之支持 JBuilder 提供图形使用者接口以简化组件文件 struts-config.xml 之编辑与设定,此外,JBuilder 于 Object Gallery对话框内的 Web 页次,提供四种精灵以简化 Struts 开发流程。
Struts Converter Wizard:
指定 HTML 或一般 JSP 档案自动产生使用 Struts Tag Libraries 之 JSP 档案。
ActionForm Wizard:
可导入JSP 档案产生继承自 ActionForm 之类,或自定义属性 ( property ) 产生继承自ActionForm 之类,类产生后可选择是否自动完成 struts-config.xml 对应设定。
Action Wizard:
可产生继承自 Action 之类,设定搭配之 JSP 档案、有效范围 ( scope ) 并自动完成struts-config.xml 对应设定。
JSP from ActionForm Wizard:
可由指定之 ActionForm 自动产生使用 Struts Tag Libraries之 JSP 档案。
除了上述精灵外,JBuilder 可协助开发人员自动设定web.xml 部署描述档,以便 JSP 使用Struts 自定义 Tag Libraries 。
二、使用Jbuilder开发struts实例 我们在这里举开发一个简易的 Web 应用程序的例子来帮助大家了解Struts Framework。此 Web 应用程序允许使用者输入两独立字符串,并将两字符串连接后显示于网页。由于处理逻辑过于简单,此实例中我们打算直接在扮演 Controller角色的 Action 中完成两字符串连接动作,因此未使用扮演 Model 角色之 JavaBean 或类来处理字符串连接。
步骤一: 建立 Web 应用程序
首先点击选择 JBuilder 集成开发环境主菜单 File->New Project, 建立一个名为StrutsDemo 之项目。接着由菜单File->New, 激活Object Gallery 对话框,并点击选择Web 页次中的 Web Application 精灵准备建立 Web 应用程序。
Web Application 精灵会为此 Web 应用程序准备妥产生WAR 所需之部署描述档 web.xml,WAR 是 J2EE 规格中用以简化 Web 程序部署复杂度之标准档案格式。我们为此 Web 应用程序命名为 demo,往后将会在编译此项目档时产生名为 demo.war 档案以便于部署,在此 Web 应用程序中由于将会用到 Struts 之 Tag Libraries,因此在JSP/Servlet frameworks 中勾选Struts 1.0,同时JBuilder 会自动设定妥 web.xml。
步骤二 : 建立自定义之 ActionForm 类
Struts Framework 中并未限制 MVC 三部份开发顺序,由于此时我们并未准备妥可输入两字符串之 HTML 或JSP,因此先建立储存信息之 ActionForm 类,再产生扮演 Controller 角色之 Action 类,最后再由 ActionForm类产生 JSP 档案,大家可依状况调整顺序以适应实际案例。
点击选择Object Gallery 对话框 Web 页次中 ActionFormWizard 可产生自定义之 ActionForm 类,ActionFormWizard 又可分为三步:第一步精灵自动侦测出之前已建妥之 Web 应用程序demo,我们将自定义 ActionForm 名称由预设 Untitled1ActionForm 修改为 myActionForm,接着按下 Next 按钮进入第二步。
第二步依照需求将未来 JSP 页面上所需显示与输入的字段加入 Field definition 清单方块中,倘若负责网页美工专职嗽币驯竿资淙胗肑SP 网页,亦可按下 Add from JSP… 按钮直接导入,JBuilder 将解析此 JSP 档案产生Field definition 表格。本例中由于未准备输入之 JSP 档案,因此必须自行加入所需之字段。
我们为此 Web 应用程序预先准备三个字段,fieldA 与 fieldB 可储存输入之字符串,fieldResult 可置放两字符串连接后结果。设定完成后按下 Next 按钮进入第三步。
对话框提示是否将 myActionForm 加入 struts-config.xml 组件档中?是否需要产生reset 方法? 可依照默认值按下 Finish 按钮。
此时 ActionForm Wizard 已经自动产生了继承自ActionForm 之 myActionForm.java 档案,如果我们不打算实现资料核验之 validate 方法,我们完全无须撰写任何程序代码。
步骤三 : 建立自定义之 Action 类 点击选择Object Gallery 对话框 Web 页次中 Action Wizard可产生自定义之 Action 类,Action Wizard 分为两步:第一步精灵自动侦测出之前已建立之 Web 应用程序demo 与 struts-config.xml 组件档,我们将自定义 Action 名称由预设 Untitled1Action 修改为 myAction,接着按下Next 按钮进入第二步。
在第二步对话框中,我们可以设定 myAction 的 perform 方法会传入哪一个 ActionForm,在FormBean Name 组合方块中,所有记录于 struts-config.xml 中的 ActionForm 都会列出以供选用,此外我们设定 myAction 之有效范围( Scope ) 为 Session,并指明/input.jsp 所有输入动作,将交由 myAction 处理。
按下 Finish 按钮后即产生 myAction.java 档案。在myAction.java 中,JBuilder 已经自动产生了 perform 方法与尚未实现之例外程序代码,我们将 perform 内的程序代码做以下之修改,已完成字符串连接的动作:
myActionForm myActionForm=
(myActionForm)ActionForm ;
String sA = myActionForm.getFieldA ( ) ;
String sB = myActionForm.getFieldB ( ) ;
myActionForm.setFieldResult (sA+sB) ;
return ( actionMapping.findForward
( "input" ) ) ;
由于 perform 方法会传入参数 ActionFrom 以便获知 Web浏览器内使用者输入之字符串,在此JBuilder 已将ActionForm 转型 ( Type Cast ) 为 myActionForm 之程序代码产生完成,开发人员仅需以 getFieldA 与 getFieldB 方法即可得知使用者输入之字符串,并将连接后结果以setFieldResult 方法回存fieldResult 属性。
return 将决定负责显示之 JSP 网页,利用perform 方法传入参数actionMapping 之 findForward 方法,可用以指定显示之JSP 网页。之前精灵对话框中已预设 /input.jsp 为负责输入之 JSP 网页,Struts 中允许输入与显示同为一个 JSP 网页,因此我们需在 struts-config.xml 中定妥名为 input 之Forward 标记,以便 findForward 方法能够利用此标记得知真正 JSP 网页名称 /input.jsp。
步骤四 : 设定 Forward 标记 点击选择 JBuilder 左上方之项目窗格 ( Project Pane ) 内之struts-config.xml,此时集成开发环境便可以图形使用者接口方式编辑 struts-config.xml 内容,左下方结构窗格( Structure Pane ) 会依照 struts-config.xml 结构,分为 DataSources 、Form Beans、Global Forwards 与 Action Mappings四类标记项目。
当点击选择 Global Forwards 项目后 JBuilder 右方内容窗格( Content Pane ) 将出现如图所示之编辑画面,开发人员可按下 Add 按钮加入名为 input 之标记,并指明此标记对应路径为 /input.jsp。
对于已经熟悉 Struts Framework 的开发人员, 若欲直接修改 struts-config.xml 内容,可以点击选择内容窗格中的Source 页次,此时内容窗格如图所示将以文字编辑器显示 XML 内容,我们可自由选择习惯之方式维护 struts-config.xml 内容.
步骤五 : 产生 JSP 接下来我们将利用现有 myActionForm.java 产生/input.jsp,点击选择Object Gallery 对话框 Web 页次中JSP from ActionForm Wizard,将出现以三步产生 JSP 之精灵:
在第一步对话框中,我们可将欲产生的 JSP 档名由预设之UntitledJsp1.jsp 改为 /input.jsp,并可按下 [ … ] 按钮以选取 ActionForm。ActionForm 选取对话框有两种查找模式,我们可以浏览 Java Package 树状结构直接选取myActionForm。
或是键入Java 类前缀名称,JBuilder 将会自动查找相符之类。例如我们键入 myActionForm 的前缀 my,将可见到对话框查找到两个相符之类。此一便捷选取类别之对话框,可在JBuilder 编辑器中以热键 Ctrl-Alt-H随时激活使用。
选取 myActionForm 完毕后,按下 Next 按钮可进入至第二步对话框。JBuilder 将分析myActionForm.java 内容显示其字段,我们可以组合方块决定该字段将以何种 Struts Tag 搭配显示,本例中三个字段皆使用可输入文字、预设之 text 型态,按下 Next 按钮即进入第三步。第三步对话框针对 Struts Tag Libraries 特性,提供多种选项,并且询问是否将全部之Struts Tag Libraries 宣告导入至JSP 档中。本例我们采用默认值,按下 Finish 按钮后 JBuilder 即产生 /input.jsp。
步骤六 : 设定执行组件 接着我们可以设定执行组件以测试本程序。点击选择JBuilder 集成开发环境主菜单 Project | Project Prosperities… 将出现项目属性设定之对话框,点击选择Run 页次准备设定执行组件。JBuilder 允许在单一项目中拥有多个执行组件,可执行 Java Application、Java Applet、J2ME MIDlet 及 J2EE 各式 Server 端应用程序。
本例中将建立一个 Server 类型之执行组件。按下对话框右侧 New… 按钮将会出现执行组件属性设定对话框,以新增一个执行组件。
执行组件属性设定对话框中,我们可以键入一识别用途之名称于 Name 字段,本例中我们键入中文识别名称 "执行 input.jsp",在 Run 页次 Type 组合方块中可选取Server 类型应用程序,由于本例我们采用 JBuilder 内置之 Tomcat 4.0 为 JSP/Servlet Container,因此 Server 下拉盒选取 Tomcat 4