gpt4 book ai didi

struts2 - 从 Struts1 迁移到 Struts2

转载 作者:行者123 更新时间:2023-12-05 00:36:47 26 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

1年前关闭。




Improve this question




我在 Struts1 中有我的应用程序,并且我在所有操作中都使用了 Dispatch 操作。现在请告诉我如何转移到 struts 2 以及应该进行哪些修改来更改我的所有操作和表单 bean。

最佳答案

我会向你推荐这个文档系列:

  • http://www.infoq.com/articles/converting-struts-2-part1
  • http://www.infoq.com/articles/migrating-struts-2-part2

  • 第一个链接解释了该主题,第二个链接有一个示例。我在下面写了一个从那里得到的解释:

    配置框架

    第一个也是最重要的配置是在 servlet 容器 web.xml 文件中启用 Web 应用程序框架的配置。

    Struts大家应该熟悉的配置是:
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    对于 Struts2,变化很少。最重要的是调度程序已经从一个 servlet 变成了一个 servlet 过滤器。配置与 servlet 一样简单,如下所示:
    <filter>
    <filter-name>webwork</filter-name>
    <filter-class>
    org.apache.struts.action2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>

    <filter-mapping>
    <filter-name>webwork</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    解构 Action

    在请求演练中,我们从高层次讨论了 Struts 和 Struts2 之间的一些差异。现在让我们更深入一点,看看每个框架中 Action 的结构之间的差异。

    让我们首先回顾一下 Struts Action 的一般结构。 Struts Action 的一般形式如下所示:

    公共(public)类 MyAction 扩展 Action {
    公共(public) ActionForward 执行(ActionMapping 映射,
    ActionForm 表单,
    HttpServletRequest 请求,
    HttpServletResponse 响应)
    抛出异常 {
    //做工作
    return (mapping.findForward("success"));
    }
    }

    在实现 Struts Action 时,您需要注意以下事项:
  • 所有 Action 都必须扩展 Action 基类。
  • 所有 Action 都必须是线程安全的,因为只创建了一个 Action 实例。
  • 因为 Action 必须是线程安全的,所以在处理 Action 时可能需要的所有对象都在方法签名中传递。
  • 为处理 Action 而调用的方法的名称是“execute”(Struts 中有一个可用的 DispatchAction 类,它可以将要执行的方法重新路由到同一 Action 中的另一个方法,但是初始入口点从框架进入 Action 仍然是“执行”方法)。
  • 使用 ActionMapping 类中的方法返回 ActionForward 结果,最常见的是通过“findForward”方法调用。

  • 相比之下,Struts2 Action 提供了更简单的实现。这是它的样子:
    public class MyAction {
    public String execute() throws Exception {
    // do the work
    return "success";
    }
    }

    您可能注意到的第一件事是该操作没有扩展任何类或接口(interface)。事实上,它比这更进一步。按照惯例,在处理一个 Action 时调用的方法是“执行”方法——但它不是必须的。任何遵循方法签名 public String methodName() 的方法都可以通过配置调用。

    最后,也许与最初的 Struts 实现最具革命性的区别在于,在处理 Action 时调用的方法(“执行”方法)没有参数。那么如何访问需要使用的对象呢?答案在于“控制反转”或“依赖注入(inject)”模式(有关更多信息,Martin Fowler 在 http://www.martinfowler.com/articles/injection.html 上有一篇内容丰富的文章)。 Spring 框架已经普及了这种模式,然而,Struts2 的前身(WebWork)大约在同一时间开始使用这种模式。

    关于struts2 - 从 Struts1 迁移到 Struts2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817323/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com