Struts的控制器组件主要完成的任务:
1. 接受用户请求
2. 根据用户请求,调用合适的模型组件来执行相应的业务逻辑。
3. 获取业务逻辑执行结果。
4. 根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户。
注:从上面流程可以看出,前面所说的控制组件应注重于流程的控制,将具体的业务逻辑分配给相应的模型组件来完成。对于控制器组件中(ActionServlet、RequestProcessor、Action),RequestProcessor完成了更多的流程控制工作。ActionServlet中调用的process方法的具体逻辑也是存在于RequestProcessor组件中。还有一点值得注意的是对于每一个应用来说,只能有一个ActionServlet而可以有多个独立的RequestProcessor对应于每个子应用。
Action类:
Action类是用户请求和业务逻辑之间的桥梁。每个Action充当客户的一项业务代理。
使用内置的Struts Action类:
1. org.apache.struts.actions.DispatchAction类:
通常,在一个Action类中只能完成一种业务操作,如果希望在同一个Action类中完成一组相关的业务操作,可以使用DispatchAction类。例如,与购物车相关的业务操作包括:查看购物车、添加商品、修改商品及数量等。
在配置DispatchAction类时,需要把parameter属性设置为“method”。
当用户请求访问DispatchAction时,应该提供method请求参数,例如:
http://localhost:8080/netstore/action/cart?method=addItem&id=2
2. org.apache.struts.actions.LookupDispatchAction类:
通常LookupDispatchAction主要应用于在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字的场合,这些按钮的名字和具体的ActionMapping的parameter属性相对应。
配置LookupDispatchAction时,应该在<action>元素中,把parameter属性设置为“action”,使它和<html:submit>标签的property属性相一致。
利用Token解决重复提交
实用类:org.apache.struts.util.*