我在Struts1中有我的应用程序,我在所有操作中都使用了Dispatch操作。现在请告诉我如何转换到struts 2以及应该做哪些修改来改变我的所有动作和表单bean。
答案 0 :(得分:6)
我会建议你这个系列文章:
第一个链接解释了主题,第二个链接有一个例子。我在下面写了一个解释:
配置框架
第一个也是最重要的配置是在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>
解构行动
在请求演练中,我们从高层谈到了Struts和Struts2之间的一些区别。让我们现在更深入一步,看看每个框架中行为结构之间的差异。
让我们首先回顾一下Struts动作的一般结构。 Struts动作的一般形式如下所示:
公共类MyAction扩展Action { public ActionForward execute(ActionMapping mapping, ActionForm表格, HttpServletRequest请求, HttpServletResponse响应) 抛出异常{ //做的工作 return(mapping.findForward(“success”)); } }
实施Struts操作时,您需要注意以下事项:
相比之下,Struts2操作提供了更简单的实现。这是它的样子:
public class MyAction {
public String execute() throws Exception {
// do the work
return "success";
}
}
您可能已经注意到的第一件事是该操作不会扩展任何类或接口。事实上,它比这更进一步。按照惯例,在处理动作时调用的方法是“执行”方法 - 但它不一定是。可以通过配置调用方法签名public String methodName()之后的任何方法。
最后,也许与原始Struts实现最具革命性的区别在于,在处理动作时调用的方法(“execute”方法)没有参数。那么如何访问需要使用的对象?答案在于“控制反转”或“依赖注入”模式(更多信息,Martin Fowler在http://www.martinfowler.com/articles/injection.html上有一篇内容丰富的文章)。 Spring框架已经普及了这种模式,然而,Struts2(WebWork)的前身大约在同一时间开始使用该模式。
答案 1 :(得分:0)
你可能使用dynamic method invocation模糊地模仿方法名称中的旧DispatchAction
- 样式“传递”功能(或者你可以编写一个使用参数的拦截器做同样的事情。)
Struts 2本身没有“表单bean”,尽管你可以实现ModelDriven
(some docs)并且 sort -of就像表单bean一样工作。
所有JSP都需要重写,但前提是您使用的是Struts 1标记。如果你只使用了JSTL标签,可能不需要,它依赖。
Ischin提供的链接是开始获取更多详细信息的好地方。
答案 2 :(得分:0)
*.action
*.do .