网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > Struts > Struts,MVC 的一种开放源码实现  

Struts,MVC 的一种开放源码实现

2007-04-17  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

清单 5. - JoinAction.perform() 网管网www_bitscn_com

 

网管联盟bitsCN_com

网管朋友网www_bitscn_net

public ActionForward perform(ActionMapping mapping,

网管u家bitscn.net

                             ActionForm form, 网管u家www.bitscn.net

                             HttpServletRequest request, 网管有家www.bitscn.net

                             HttpServletResponse response) 网管联盟bitsCN@com

                             throws IOException, ServletException {

网管有家www.bitscn.net

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

    JoinForm joinForm = (JoinForm) form;

网管朋友网www_bitscn_net

    String email = joinForm.getEmail();

网管下载dl.bitscn.com

    ActionErrors errors = new ActionErrors(); 网管论坛bbs_bitsCN_com

    // 存储输入.... 网管论坛bbs_bitsCN_com

    try { 中国网管论坛bbs.bitsCN.com

        business.db.MailingList.AddEmail(email); 网管u家www.bitscn.net

    } catch (Exception e) {

网管朋友网www_bitscn_net

        // 记录日志,打印栈 网管网www.bitscn.com

        // 将错误回显给用户

网管联盟bitsCN@com

        errors.add("email",new ActionError("error.mailing.db.add")); 网管联盟bitsCN_com

    } 网管u家bitscn.net

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

网管下载dl.bitscn.com

    //  HTTP 请求中,以供 <struts:errors> 标记使用。 网管u家u.bitsCN.com

    if (!errors.empty()) {

网管联盟bitsCN_com

        saveErrors(request, errors); 中国网管论坛bbs.bitsCN.com

        // 返回到初始表单

网管有家bitscn.net

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

网管网www_bitscn_com

    } 网管u家u.bitscn@com

    // 将控制权转交给 Action.xml 中指定的 'success' URI 网管网www.bitscn.com

    return (mapping.findForward("success")); 中国网管联盟bitsCN.com

}

网管联盟bitsCN_com

  网管u家bitscn.net

  网管u家u.bitscn@com

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

网管有家bitscn.net

  控制器 网管联盟bitsCN@com

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

网管u家u.bitsCN.com



  清单 6. Action 配置

中国网管联盟bitsCN.com

网管联盟bitsCN@com

<action  path="/join"

网管bitscn_com

         name="joinForm"

网管u家bitscn.net

         type="web.mailinglist.JoinAction" 中国网管论坛bbs.bitsCN.com

        scope="request"

网管有家www.bitscn.net

        input="/joinMVC.jsp"

网管u家www.bitscn.net

     validate="true">

网管bitscn_com

    <forward  name="success"  path="/welcome.html"/>

中国网管论坛bbs.bitsCN.com

</action> 网管u家bitscn.net

 

网管论坛bbs_bitsCN_com

  网管联盟bitsCN_com

    action 元素描述了从请求路径到相应的 Action 类的映射,应该用这些类来处理来自这个路径的请求。每个请求类型都应该有相应的 action 元素,用来描述如何处理该请求。对于 join 请求:

网管u家u.bitsCN.com

  1. joinForm 用来容纳表单数据。
  2. 因为 validate 被标记为 true,所以 joinForm 将试图进行自我验证。
  3. web.mailinglist.JoinAction 是用来处理对这个映射的请求的 action 类。
  4. 如果一切顺利,该请求将转到 welcome.jsp 。
  5. 如果出现业务逻辑故障,流程将返回到 joinMVC.jsp ,这是最初发出请求的网页。为什么会这样呢?在清单 6 的 action 元素中,有一个称为 input 的属性,其值为 "/joinMVC.jsp" 。在我的 JoinAction.perform() (如清单 5 所示)中,如果业务逻辑失败, perform() 就返回一个 ActionForward ,并以 mapping.getInput() 作为参数。本例中的 getInput() 是 "/joinMVC.jsp" 。如果业务逻辑失败,它将返回到 joinMVC.jsp ,这是最初发出请求的网页。

  网管有家www.bitscn.net

  使用 Struts 前后的比较 网管u家u.bitscn@com

正如我们在图 9 中所看到的那样,复杂性和层都有显著增加。不再存在从 JSP 文件到 Service 层的直接调用。 网管u家bitscn.net

Before and after Struts

    图 9. 使用 Struts 前后的比较
网管u家u.bitsCN.com

Struts 的优点 网管u家u.bitsCN.com

  • JSP 标记机制的使用
    标记特性从 JSP 文件获得可重用代码和抽象 Java 代码。这个特性能很好地集成到基于 JSP 的开发工具中,这些工具允许用标记编写代码。
  • 标记库
    为什么要另发明一种轮子,或标记库呢?如果您在库中找不到您所要的标记,那就自己定义吧。此外,如果您正在学习 JSP 标记技术,则 Struts 为您提供了一个起点。
  • 开放源码 网管网www_bitscn_com
    您可以获得开放源码的全部优点,比如可以查看代码并让使用库的每个人检查代码。许多人都可以进行很好的代码检查。
  • MVC 实现样例
    如果您希望创建您自己的 MVC 实现,则 Struts 可增加您的见识。
  • 管理问题空间
    分治是解决问题并使问题可管理的极好方法。当然,这是一把双刃剑。问题越来越复杂,并且需要越来越多的管理。

TAGs实现   源码   开放   Struts   JSP   一个   文件   标记   代码   Java    
 上一篇:Struts的静态数据验证方法   下一篇:struts2的demo中show case的crud示例
Struts,MVC 的一种开放源码实现 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: