Spring MVC without configuration file
- Create a dynamic web project
- Implement your own WebApplicationInitializer
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override public void onStartup(ServletContext servletCxt) {
// Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); ac.register(WebConfig.class, ViewConfig.class);
// Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("*.do"); } } |
- Implement WebMvcConfigurer
@Configuration @EnableWebMvc @ComponentScan("net.ly.blue.user") public class WebConfig implements WebMvcConfigurer {
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { System.out.println("------------------ addResourceHandlers"); registry.addResourceHandler("/resources/**").addResourceLocations("/public/").resourceChain(true) .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")); } } |
- Add view resolver
@Configuration public class ViewConfig {
@Bean public ViewResolver urlBasedViewResolver() { UrlBasedViewResolver viewResolver; viewResolver = new UrlBasedViewResolver(); viewResolver.setOrder(2); // viewResolver.setPrefix(""/WEB-INF/); viewResolver.setSuffix(".jspx"); viewResolver.setViewClass(JstlView.class); // for debug envirment viewResolver.setCache(false); return viewResolver; } @Bean public ViewResolver resourceViewResolver() { InternalResourceViewResolver viewResolver=new InternalResourceViewResolver(); viewResolver.setOrder(1); viewResolver.setPrefix(""); viewResolver.setSuffix(".jsp"); return viewResolver; } } |
- Write a simple controller
package net.ly.blue.user;
import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;
@Controller @RequestMapping("/sayHello") public class HelloController { @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); System.out.println("enter hello");
return "hello"; } } |
- Project structure