当前位置:首页>>开发编程>>JAVA>>新闻内容
用JBuilder9 开发Struts实例
作者:务实 发布时间:2004-4-24 9:40:04 文章来源:天极开发者网络

  本文将给大家介绍在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 清单方块中,倘若负责网页美工专职人员已备妥输入用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 内容。

  步骤五 : 产生 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.0。倘若我们的 Server 组合方块中无适当选项可供选取,可于JBuilder 主菜单 Tools | Configure Server… 中进行相关设定。接着我们必须选取此 Web应用程序激活 URI,我们可按下 Launch URI 字段右侧 [ … ] 按钮,即可出现选取 URI 之对话框,我们可直接以鼠标点击选择左侧 input.jsp,按下 OK 按钮完成选取,并返回执行组件属性设定对话框。

  此时执行组件属性设定对话框中主要项目皆已设定完毕,按下 OK 按钮返回项目属性设定对话框。项目属性对话框中将把前述步骤所设定之执行组件列于Runtime Configurations 清单方块中,按下 OK 按钮即完成执行组件设定。

  步骤七 : 执行 Web 应用程序

  接下来可点击选择 JBuilder 菜单 Run 或工具列中绿色三角形符号执行此 Web 应用程序。JBuilder 将于集成开发环境内激活 Tomcat 4.0 Server,我们可以通过 JBuilder 内置之 Web 浏览器进行测试,或于Microsoft Internet Explorer 网址字段中键入:

http://localhost:8080/demo/input.jsp

  以进行测试。在 Web 浏览器中我们键入 AAA 与 BBB 按下 Submit 按钮,得到预期之运算结果AAABBB。

  倘若将第一个字段改以繁体中文键入,却发现产生乱码,字符串连接结果也无法正确辨认。Struts Framework并无中文兼容性上之问题,但是 Tomcat 4.0 在使用 JSP处理内含中文请求时,并需设定请求编码。繁体中文环境常用编码为 Big5 与 MS950,MS950 编码含括 Big5 编码,并额外增加 碁、恒、里、妆、娴、锈、墙 等七字。

  例如,在 Microsoft Windows 平台下,欲使 Tomcat 4.0 正确处理繁体中文,通常在 JSP 起始处加上:

<%@ page contentType="text/html; charset=MS950" %>
<% request.setCharacterEncoding("MS950") ; %>

  以设定网页内容编码与请求编码为 MS950 编码;类似地,对于简体中文(常用编码为GB2312),以上的代码应为:

<%@ page contentType="text/html; charset=GB2312" %>
<% request.setCharacterEncoding("GB2312") ; %>

  但是 Struts Framework 中实际上是由 ActionServlet 收到Web 浏览器端请求,再转交特定之 Action 类加以处理,因此直接于 JSP 中设定请求编码并无效果。

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

  对于处理 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> 标记的内容。

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

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


最新更新
·MyEclipse 6.0的破解方法(附
·Java图片缩小后不失真的代码
·Java开发技术十年的回顾与展
·关于TOMCAT主目录与虚拟目录
·用java程序调用ffmpeg执行视
·JavaBean与Enterprise JavaB
·Java开发人员的十大戒律
·JavaFX Script将终结AJAX?还
·解决IE中所有png图片透明问题
·JSP解决地址栏中传递中文字符
相关信息
·利用JBuilder 2005 开发Spring实例
·利用JBuilder2005开发Web应用程序
·解决JBuilder在中文系统中光标错位的问题
·[图]如何让JBuilder9支持Struts 1.1
·Jboss3.0.7在Jbuilder7中的配置
画心
愚爱
偏爱
火苗
白狐
画沙
犯错
歌曲
传奇
稻香
小酒窝
狮子座
小情歌
全是爱
棉花糖
海豚音
我相信
甩葱歌
这叫爱
shero
走天涯
琉璃月
Nobody
我爱他
套马杆
爱是你我
最后一次
少女时代
灰色头像
断桥残雪
美了美了
狼的诱惑
我很快乐
星月神话
心痛2009
爱丫爱丫
半城烟沙
旗开得胜
郎的诱惑
爱情买卖
2010等你来
我叫小沈阳
i miss you
姑娘我爱你
我们都一样
其实很寂寞
我爱雨夜花
变心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK绷
贝多芬的悲伤
哥只是个传说
丢了幸福的猪
找个人来爱我
要嫁就嫁灰太狼
如果这就是爱情
我们没有在一起
寂寞在唱什么歌
斯琴高丽的伤心
别在我离开之前离开
不是因为寂寞才想你
爱上你等于爱上了错
在心里从此永远有个你
一个人的寂寞两个人的错