zoukankan      html  css  js  c++  java
  • 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()
    
  • 相关阅读:
    关于IE11浏览器同意请求只执行一次的解决方法
    基于Vue+iView+OpenLayer在IE11上运行的方法总结
    vue 树形目录结构
    css中DIV中字过多时,使用省略号的方法
    hls.js在vue中的使用
    SQL优化
    Python 实现自动化 Excel 报表
    C# HttpClient 请求认证、数据传输笔记
    任务队列处理
    判断是否包含中文
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4755360.html
Copyright © 2011-2022 走看看