站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JBuilder 专题用JBuilder9 开发Struts实例

用JBuilder9 开发Struts实例

摘要: 用JBuilder9 开发Struts实例 一、JBuilder 对于 Struts 之支持 JBuilder 提供图形使用者接口以简化组件文件 struts-config.xml 之编辑与设定,此外...
用JBuilder9 开发Struts实例

  一、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 清单方块中,倘若负责网页美工专职人员已备妥输入用JSP 网页,亦可按下 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 内容。


  三、处理中文编码问题(以繁体中文为例)

  对于处理 Struts Framework 中文编码问题有多种方式,在此我们继承 ActionServlet 类并覆盖 process 方法,于子类process 方法中设定请求编码。由此展现ActionServlet 扮演前端 Controller 之特质。

  首先,点击选择 JBuilder 主菜单 File | New Classes 准备产生一新的类。并继承自org.apache.struts.action.ActionServlet并将预设的类名称由Untitled1 改为 myActionServlet。按下 OK 按钮后即产生程序代码。点击选择 JBuilder 主菜单Wizards | Override Methods… 激活覆盖方法精灵,覆盖方法精灵会自动列出父类 ActionServlet 所有可供覆盖之方法。我们可于 Available methods 清单方块中选取process (HttpServletRequest request, HttpServletResponse response) 方法,完成后按下 OK 按钮。

  此时我们可修改覆盖后 process 方法程序代码如下:

request.setCharacterEncoding ("MS950") ;
super.process (request, response) ;

  备注:此处以繁体中文为例,在中国国内一般我们用的是简体中文,因此可以将上述代码在简体中文环境下编写为:

request.setCharacterEncoding ("GB2312") ;
super.process (request, response) ;

  首行程序代码将 process 传入之参数 request 设定为 MS950编码,其余行为同父类。接下来我们将要修改 web.xml部署描述档,以指定 Servlet 之进入点,首先点击选择左上方项目窗格中的 web.xml。




  此时,左下方结构窗格将出现 web.xml 内 XML 标记之树状结构。我们可以点击选择 Servlets 内的 Action 项目。

  此时,便可运用右方内容窗格之图形使用者接口编辑器修改 Servlet 进入点,目前预设之进入点是 Struts Framework 的 ActionServlet。

  我们可以按下 Servlet class 项目右方 [ … ] 按钮选取新的进入点替换预设之ActionServlet,也就是之我们撰写之strutsdemo.myActionServlet。倘若我们非常熟悉web.xml 结构,同样地可以直接点击选择内容窗格内的 Sources 页次,直接以文字编辑器修改<servlet-class> 标记的内容。

  修改完毕后,内容窗格内应如下图:




  完成后重新编译此项目并执行之。再次测试后我们将发现繁体中文已经可以正确处理。




↑返回目录
前一篇: JBuilder光标问题的解决方案
后一篇: 用JBuilder 9 开发一个文本编辑器