如何使用 Struts 2 中的视图?
How to work with view in Struts 2?
在普通的旧 servlets
中,我可以使用 doGet
和 doPost
方法。在 doGet
中,我将用户转发到某个页面,在 doPost
中,我正在处理从我提供的页面输入的数据。这一切都发生在一个 servlet 中。
但是 Struts2 适用于前端控制器模式,而 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>
还有其他选择吗?更喜欢哪一个?
在标准的Struts2风格中,一个Actionclass只有一种工作方法,即execute
方法。但是,您没有必要必须遵循这一点。您可以在单个操作中定义多个操作 class.
例如,您向 users
发出 GET 请求,该请求在 UsersAction
的默认 execute
方法中处理。
@Override
public String execute() {
// fetch the list of users
return SUCCESS;
}
假设您想通过 POST 到 user_add
在同一操作中添加新用户。所以你定义了一个add
方法:
public String add() {
// add the user
return SUCCESS;
}
struts.xml
看起来类似于:
<package name="users" extends="defaultPackage">
<action name="users" class="com.example.UsersAction">
<result>users.jsp</result>
</action>
<action name="user_add" class="com.example.UsersAction" method="add">
<result type="redirect">users</result>
</action>
</package>
在您的场景中,您将呈现您的页面,用户应该在(可能为空)execute
方法的 运行 之后看到该页面。然后,您将发出 post 请求,该请求将映射到 Action class.
的另一个方法
在普通的旧 servlets
中,我可以使用 doGet
和 doPost
方法。在 doGet
中,我将用户转发到某个页面,在 doPost
中,我正在处理从我提供的页面输入的数据。这一切都发生在一个 servlet 中。
但是 Struts2 适用于前端控制器模式,而 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>
还有其他选择吗?更喜欢哪一个?
在标准的Struts2风格中,一个Actionclass只有一种工作方法,即execute
方法。但是,您没有必要必须遵循这一点。您可以在单个操作中定义多个操作 class.
例如,您向 users
发出 GET 请求,该请求在 UsersAction
的默认 execute
方法中处理。
@Override
public String execute() {
// fetch the list of users
return SUCCESS;
}
假设您想通过 POST 到 user_add
在同一操作中添加新用户。所以你定义了一个add
方法:
public String add() {
// add the user
return SUCCESS;
}
struts.xml
看起来类似于:
<package name="users" extends="defaultPackage">
<action name="users" class="com.example.UsersAction">
<result>users.jsp</result>
</action>
<action name="user_add" class="com.example.UsersAction" method="add">
<result type="redirect">users</result>
</action>
</package>
在您的场景中,您将呈现您的页面,用户应该在(可能为空)execute
方法的 运行 之后看到该页面。然后,您将发出 post 请求,该请求将映射到 Action class.