Question: I'm using C# on an input id from ASP form.
The `id` name is: `SpecialValue`. I'm also using JavaScript to dynamically add more values (`SpecialValue2`, `SpecialValue3` and so on). When trying to read from the variables, I'm getting an error with this example of concatenation.

Can someone please explain why?

```
for (int i = 2; i < 10; i++)
{        
    if ("SpecialValue" +i+.Value == null)
         break;
}

```

Answer: 
Since introduction of RequestMappingHandlerMapping and RequestMappingHandlerAdapter in Spring 3.1 the distinction is even simpler: 
RequestMappingHandlerMapping finds the appropriate handler method for the given request. RequestMappingHandlerAdapter executes this method, providing it with all the arguments.
The **HandlerMapping** is used to Maps a request to Handlers i.e. Controllers. For example: DefaultAnnotationHandlerMapping, SimpleUrlHandlerMapping, BeanNameUrlHandlerMapping. DefaultAnnotationHandlerMapping. 

`<mvc:annotation-driven />` declares explicit support for annotation-driven MVC controllers. The tag configures two beans (Mapping and Adapter) `DefaultAnnotationHandlerMapping` and `AnnotationMethodHandlerAdapter` so that you do not need to declare them in context config file. 

The **HandlerAdapter** is basically an interface which facilitates the handling of HTTP requests in a very flexible manner in Spring MVC. The DispatcherServlet doesn’t invoke the method directly – it basically serves as a bridge between itself and the handler objects, leading to a loosely coupling design. 

```
public interface HandlerAdapter {
    //check if a particular handler instance is supported or not. 
    boolean supports(Object handler);

   //used to handle a particular HTTP request and returns ModelAndView object to DispatcherServlet
    ModelAndView handle(
      HttpServletRequest request,
      HttpServletResponse response, 
      Object handler) throws Exception;

    long getLastModified(HttpServletRequest request, Object handler);
}

```

**Types of HandlerAdapter :**  

[![enter image description here](https://i.stack.imgur.com/WPPEO.jpg)](https://i.stack.imgur.com/WPPEO.jpg)

**AnnotationMethodHandlerAdapter** : which executes methods annotated with `@RequestMapping`. AnnotationMethodHandlerAdapter was deprecated and replace by **RequestMappingHandlerAdapter** from Spring 3.1+. 

SimpleControllerHandlerAdapter: This is the default handler adapter registered by Spring MVC. It deals with classes implementing Controller interface and is used to forward a request to a controller object. 

If a web application uses only controllers then we don’t need to configure any HandlerAdapter as the framework uses this class as the default adapter for handling a request.

Let’s define a simple controller class, using the older style of controller (implementing the Controller interface):

```
public class SimpleController implements Controller {
    @Override
    public ModelAndView handleRequest(
      HttpServletRequest request, 
      HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("Greeting");
        model.addObject("message", "Dinesh Madhwal");
        return model;
    }
}  

```

Similar XML configuration:

```
<beans ...>
    <bean name="/greeting.html"
      class="com.baeldung.spring.controller.SimpleControllerHandlerAdapterExample"/>
    <bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

```

[for more](http://www.baeldung.com/spring-mvc-handler-adapters)