Spring提供一個多動作控制器,使用它你可以將幾個動作合并在一個控制器裡,這樣可以把功能組合在一起。
多動作控制器存在在一個單獨的包中——org.springframework.web.mvc.multiaction——它能夠將請求映射到方法名,
然後調用正確的方法。比如當你在一個控制器中有很多公用的功能,但是想多個入口到控制器使用不同的行為,
使用多動作控制器就特別方便。
MultiActionController類實現
類定義:public class MultiActionController extends AbstractController implements LastModified,
繼承了AbstractController,並實現了LastModified介面,預設返回-1;
核心屬性:
delegate: 功能處理的委派物件,即我們要調用請求處理方法所在的對象,預設是this;
methodNameResolver:功能處理方法名解析器,即根據請求資訊來解析需要執行的delegate的功能處理方法的方法名。
接下來看一個使用ParameterMethodNameResolver的例子
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;public class UserController extends MultiActionController {public ModelAndView add(HttpServletRequest request,HttpServletResponse response) {ModelAndView mv = new ModelAndView(); mv.addObject("message","add"); mv.setViewName("add"); return mv; }public ModelAndView delete(HttpServletRequest request,HttpServletResponse response) {ModelAndView mv = new ModelAndView(); mv.addObject("message","delete"); mv.setViewName("delete"); return mv; }}
springMVC.xml配置
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="userAction.do">userAction</prop> </props> </property></bean><bean id="userAction" class="com.itmyhome.UserController"> <property name="methodNameResolver"> <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <!-- 指定參數名為action --> <property name="paramName" value="action" /> </bean> </property></bean>
測試URL:
http://localhost:8080/spring_MultiActionController/userAction.do?action=add
http://localhost:8080/spring_MultiActionController/userAction.do?action=delete
源碼下載:http://download.csdn.net/detail/itmyhome/7363665
歡迎加入JAVA技術交流群:74955800