使用springMVC我們一般都會在web.xml中配置一個dispatcher,現在我們基於用java代碼的方式來使用springMVC
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @Configuration @EnableWebMvc @ComponentScan public class MVCConfig { @Bean public InternalResourceViewResolver viewResolver(){ InternalResourceViewResolver viewResolver=new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/"); viewResolver.setSuffix(".jsp"); viewResolver.setViewClass(JstlView.class); return viewResolver; } }
以上是一個普通的spring配置類,在其中是配置了一個jsp的ViewResolver,相信熟悉springMVC的知道這個ViewResolver。
@Configuration聲明當前類為配置類,
@EnableWebMvc注解會開啟一些默認配置,如ViewResolver
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; public class WebConfig implements WebApplicationInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext context=new AnnotationConfigWebApplicationContext(); context.register(MVCConfig.class); context.setServletContext(servletContext); Dynamic servlet=servletContext.addServlet("dispatcher", new DispatcherServlet(context)); servlet.addMapping("/"); servlet.setLoadOnStartup(1); } }
以上代碼其實就相當於我們在web.xml中配置的dispatcher,webApplicationInitializer是spring提供用來配置Servlet3.0+配置的接口,從而實現了替代web.xml的位置,實現此接口將會自動被SpringServletContainerInitialzer(用來啟動Servlet3.0容器)獲取到,然后我們需要注冊我們前面寫的MVCConfig配置類,並將其和當前servletContext關聯。
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("index") public String hello(){ return "index"; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> Hello World </body> </html>
上面就是一個控制器和相應的index.jsp代碼,將項目部署到tomcat中,啟動,訪問相應的URL。
注:以上分享來自 JavaEE開發的顛覆者: Spring Boot實戰書籍

