This example demonstrates how to use SimpleUrlHandlerMapping. Check out the HandlerMapping tutorial to get familiar with the concept.
SimpleUrlHandlerMapping can be used to map URL patterns to handler beans.
Example
Registering SimpleUrlHandlerMapping
SimpleUrlHandlerMapping is not registered by default, so we have to register it ourselves:
package com.logicbig.example;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.HttpRequestHandler;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import java.util.HashMap;
import java.util.Map;
@EnableWebMvc
@Configuration
public class AppConfig {
@Bean
HttpRequestHandler httpRequestHandler () {
return new MyHttpRequestHandler();
}
@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping () {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
Map<String, Object> map = new HashMap<>();
map.put("/app/**", httpRequestHandler());
mapping.setUrlMap(map);
return mapping;
}
}
We are mapping the Ant-style pattern '/app/**', which maps all URIs starting with /app.
We are also registering an implementation of HttpRequestHandler (which is invoked by the HttpRequestHandlerAdapter strategy, registered by default). We could also use a Controller implementation instead, in which case we would rely on the SimpleControllerHandlerAdapter strategy (also registered by default). Check out the HandlerAdapter tutorial to get familiar with the concept.
Implementing HttpRequestHandler
package com.logicbig.example;
import org.springframework.web.HttpRequestHandler;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class MyHttpRequestHandler implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
PrintWriter writer = response.getWriter();
writer.write("response from MyHttpRequestHandler, uri: " +
request.getRequestURI());
}
}
To try examples, run embedded Jetty (configured in pom.xml of example project below):
mvn jetty:run
Output
 $ curl -s "http://localhost:8080/app/" response from MyHttpRequestHandler, uri: /app/
 $ curl -s "http://localhost:8080/app/example" response from MyHttpRequestHandler, uri: /app/example
Example ProjectDependencies and Technologies Used: - spring-webmvc 7.0.6 (Spring Web MVC)
Version Compatibility: 3.2.9.RELEASE - 7.0.6 Version compatibilities of spring-webmvc with this example: Versions in green have been tested.
- jakarta.servlet-api 6.1.0 (Jakarta Servlet API documentation)
- JDK 25
- Maven 3.9.11
|