对于同一个表单,当用户通过不同的按钮提交同一个表单时,系统需要使用Action的不同方法来处理用户请求,这时Action便需要包含多个控制处理逻辑,即一个action中包含多个方法。例如:login界面有“登录”和“注册”两个按钮,分别触发UserAction中的login和regist方法。
MVC模式:
经典MVC模式中,事件由控制器(controller)处理,控制器根据事件类型改变视图(view),简言之,每个模型对应一系列的视图列表,不同事件通过控制器触发,获取模型(model)数值,返回不同的视图去呈现。
struts2——MVC模式实践者:
Action充当控制器(Controller),浏览器中URL地址输入指定action名称,触发struts核心控制器StrutsPrepareAndExecuteFilter实例化出指定action对象,调用action中指定方法,通过方法返回值,读struts.xml配置文件返回指定jsp页面(view)。
DMI——Action动态方法调用:
初学时,action中方法总是比较单一的;例如上述登录和注册的例子,一般会创建两个action类,loginAction 和registeAction,分别写好login和registe相关的业务逻辑;在struts配置文件中也配置两个action:
<action name="regist" class="cn.itcast.shop.user.action.loginAction">
<result name="msg">/WEB-INF/jsp/regist.jsp</result>
</action>
<action name="login" class="cn.itcast.shop.user.action.registeAction">
<result name="login">/WEB-INF/jsp/login.jsp</result>
<result name="loginSuccess" type="redirectAction">index</result>
</action>
但实际应用