首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 开源技术 >> Struts >> 正文

用Struts实现管理大型复杂的网站



稳定性

并不是每个组织都每天、每周甚至每月进行检修。因此,在进行开发时,稳定的接口点是重要的。不能因为业务包处于变迁阶段就认为 Web 项目也应该处于变迁阶段。 

业务构建注释

我用 Ant 构建项目,并用 JUnit 运行单元测试。business.zip 包含构建业务项目所需的一切,当然 Ant 和 JUnit 除外。这个包脚本将构建类,运行单元测试,创建 Java 文档和 jar 文件,最后将所有这些内容压缩到一个 zip 文件中发送给客户。只要对 build.xml 作一些修改,您就可以将它部署到其他平台上。Business.jar 位于 Web 的下载部分,因此,您并非必须下载并构建这个业务包。

Web 项目

第二个项目是用 Struts 开发的一个 Web 应用程序。您将需要一个符合 JSP 1.1 和 Servlet 2.2 规范的容器。最快的入门方法是下载并安装 Tomcat 3.2(请参阅参考资源)。直到有 Struts 的 1.0 发行版之前,我建议您从 Jakarta 项目获得最新的版本(请参阅参考资源)。这对我来说是个大问题,我不能确保我的 Web 项目样例能与您下载的 Struts 一起工作。Struts 仍在不断变化,所以我不得不经常更新我的项目。在本项目中,我使用的是 jakarta-struts-20010105.zip。图 8 显示了此 Web 项目的结构。如果您已安装了 Ant,则运行这个版本将创建一个称为 joinStruts.war 的 war 文件,您随时可以部署这个文件。

图 8. Web 项目的结构

清单 4 显示了转换后的 JSP 文件,称为 joinMVC.jsp。这个文件从最初的 50 行变为 19 行,并且现在不含任何 Java 代码。从网页设计人员的角度来看,这是个巨大的改进。

清单 4. joinMVC.jsp -- 再访简单的 JSP

<%@ page language="java" %>

<%@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>

<%@ taglib uri="/WEB-INF/struts-form.tld" prefix="form" %>













Enter your email to join the group

















网页的变化

下面是使用 Struts 标记库之后所发生变化的列表: 

Import

<%@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>



用于 Java 代码的 <%@page import? 已被替换为用于 Struts 标记库的 <%@ taglib uri?。

文本





资源属性文件包含 join.title 的文本。在本例中,ApplicationResources 属性文件包含这个名值对。这使字符串更易于查看和国际化。

错误





ActionServlet 或 ActionForm 构建要显示的错误消息。这些错误消息也可以包含在属性文件中。ApplicationResources 也提供了一种格式化错误的方法,即设置 error.header 和 error.footer。

HTML 表单





JSP 
 标记和属性替代了 HTML  标记和属性。  已更改为 。 

HTML  标记已替换为 。 

HTML  标记已替换为 。 

模型 -- 会话状态

JoinForm 扩展了 ActionForm 并包含表单数据。本例中的表单数据只有电子邮件地址。我已为电子邮件地址添加了一个写方法和读方法,以供框架访问。为了便于说明,我重写了 validate() 方法,并使用了 Struts 的跟踪功能。Struts 将创建 JoinForm 并设置状态信息。

模型 -- 业务逻辑

如前所述,Action 是控制器和实际业务对象之间的接口。JoinAction 包装了对 business.jar 的调用,这些调用最初在 join.jsp 文件中。JoinAction 的 perform() 方法在清单 5 中列表。

清单 5. - JoinAction.perform()

public ActionForward perform(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws IOException, ServletException {

// 抽取我们将会用到的属性和参数

JoinForm joinForm = (JoinForm) form;

String email = joinForm.getEmail();

ActionErrors errors = new ActionErrors();

// 存储输入....

try {

business.db.MailingList.AddEmail(email);

} catch (Exception e) {

// 记录日志,打印栈

// 将错误回显给用户

errors.add("email",new ActionError("error.mailing.db.add"));

}

// 如需任何消息,请将指定的错误消息键保存到

//  HTTP 请求中,以供  标记使用。

if (!errors.empty()) {

saveErrors(request, errors);

// 返回到初始表单

return (new ActionForward(mapping.getInput()));

}

// 将控制权转交给 Action.xml 中指定的 'success' URI

return (mapping.findForward("success"));

}

注:perform() 返回一个称为 ActionForward 的类,该类通知控制器下一步该执行什么操作。在本例中,我使用从控制器传入的映射来决定下一步的操作。

控制器

我已修改了 JSP 文件,并创建了两个新类:一个类用来包含表单数据,一个类用来调用业务包。最后,我通过修改配置文件 struts-config.xml 将它们整合起来。清单 6 显示了我添加的 action 元素,这个元素用来控制 joinMVC.jsp 的流程。

清单 6. Action 配置 
name="joinForm"

type="web.mailinglist.JoinAction"

scope="request"

input="/joinMVC.jsp"

validate="true">






上一页  [1] [2] [3] [4] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·算法分析与设计之五大常用算法
 ·开发必备 漫谈Java加密保护
 ·嵌入式开发--ARM技术专题
 ·C/C++指针,认真了解,灵活运用
 ·.NET开发:C#实用基础教程
 ·软件测试工具QTP学习专题
 ·嵌入式开发单片机解决方案专题
 ·Java开发环境 Greenfoot 程序员手册
 ·C++对象布局及多态实现的探索
 ·常见排序算法的实现
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航