• Spring MVC MultiActionController example


    In Spring MVC application, MultiActionController is used to group related actions into a single controller, the method handler have to follow below signature :

    	public (ModelAndView | Map | String | void) actionName(
    		HttpServletRequest, HttpServletResponse [,HttpSession] [,CommandObject]);
    

    1. MultiActionController

    See a MultiActionController example.

    package com.mkyong.common.controller;
    
    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 CustomerController extends MultiActionController{
    	
    	public ModelAndView add(HttpServletRequest request,
    		HttpServletResponse response) throws Exception {
    		
    		return new ModelAndView("CustomerPage", "msg","add() method");
    			
    	}
    	
    	public ModelAndView delete(HttpServletRequest request,
    		HttpServletResponse response) throws Exception {
    			
    		return new ModelAndView("CustomerPage", "msg","delete() method");
    				
    	}
    	
    	public ModelAndView update(HttpServletRequest request,
    		HttpServletResponse response) throws Exception {
    			
    		return new ModelAndView("CustomerPage", "msg","update() method");
    				
    	}
    	
    	public ModelAndView list(HttpServletRequest request,
    		HttpServletResponse response) throws Exception {
    				
    		return new ModelAndView("CustomerPage", "msg","list() method");
    					
    	}
    	
    }
    

    With ControllerClassNameHandlerMapping configured.

    <beans ...>
    
     <bean 
      class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
        
      <bean class="com.mkyong.common.controller.CustomerController" />
    	
    </beans>
    

    2. Mapping Examples

    Now, the reuqested URL will map to the method name in the following patterns :

        CustomerController –> /customer/*
        /customer/add.htm –> add()
        /customer/delete.htm –> delete()
        /customer/update.htm –> update()
        /customer/list.htm –> list()
    

    3. InternalPathMethodNameResolver

    The InternalPathMethodNameResolver is the default MultiActionController implementation to map URL to method name. But, you are still allow to add prefix or suffix to the method name :

    <beans ...>
     <bean 
      class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
        
      <bean class="com.mkyong.common.controller.CustomerController">
         <property name="methodNameResolver">
    	<bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
    	   <property name="prefix" value="test" />
    	   <property name="suffix" value="Customer" />
    	</bean>
         </property>
       </bean>
    </beans>
    

    Now, the URL will map to the method name in the following pattern :

        CustomerController –> /customer/*
        /customer/add.htm –> testaddCustomer()
        /customer/delete.htm –> testdeleteCustomer()
        /customer/update.htm –> testupdateCustomer()
        /customer/list.htm –> testlistCustomer()
    
  • 相关阅读:
    使用 media 实现响应式布局
    Django组件的中间件
    Django组件的cookie和 session,用户认证组件
    Django的文件上传和分页
    Ajax
    Django模型层的多表操作(2)
    Django模型层的多表操作(1)
    Django的查询表记录
    Django2.0版本的路由层和ORM但表操作
    Django的路由层,视图层和模版层
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4755360.html
Copyright © 2020-2023  润新知