【发布时间】:2015-03-02 08:21:14
【问题描述】:
在普通的 servlets 中,我可以使用 doGet 和 doPost 方法。在doGet 中,我将用户转发到某个页面,而在doPost 中,我正在处理从我提供的页面输入的数据。这一切都发生在一个 servlet 中。
但是 Struts2 在 Front Controller 模式下工作,而 doGet/doPost 我只有 execute 方法。那么我怎样才能正确地给用户一些页面,以便他可以看到它,输入数据,提交和申请作为结果在execute 中处理它?
据我所知,我有两个选择(注册表上的示例):
-
将页面映射到另一个 url:
<action name="register_display"> <result name="success" type="dispatcher">register.jsp</result> </action> <action name="register" class="magazine.action.client.RegisterClientAction" method="execute"> <result name="success" type="redirectAction">/index</result> <result name="error" type="redirectAction">register_display </result> </action> -
创建一个名为
display的整个包,并在其中放置可以执行 POST 的所有视图:<package name="display" namespace="/display" extends="struts-default"> <action name="register"> <result name="success" type="dispatcher">register.jsp</result> </action> ... </package>
还有其他选择吗?哪个更受欢迎?
【问题讨论】:
-
向我们展示 Struts.xml 文件中的相应操作。
-
创建方法,不要显式使用
execute方法,创建2个动作(一个无方法,另一个使用自定义方法)。 -
您应该使用不同的动作名称,除非您使用 Struts 动作的 REST 样式映射。
-
@VinothKrishnan 我编辑了我的帖子
-
@RomanC 我实际上并不熟悉这种映射。但关键是我应该在我的操作中提供两种方法,并将一种用于将用户转发到某个页面,另一种用于提交它?
标签: java jsp model-view-controller struts2 front-controller