SpringMVC 通過java類配置(不通過web.xml和xml 配置檔案方式)
阿新 • • 發佈:2019-02-12
介紹:
springMVC 常用的配置方式是在web.xml 中配置dispatcherservlet 和 ContextConfigLocation 和一些攔截器,然後或是配置applicationContext-mvc.xml 然後在controller 等類中加上註解的方式來啟動
其實不一定非要用web.xml 來進行配置,在servlet3.0 標準中就沒有web.xml 配置檔案了,springMVC 同樣也可以不需要依賴web.xml檔案,而是通過建立類的方式配置
步驟
1.需要建立一個類繼承自AbstractAnnotationConfigDispatcherServletInitializer,這個類的作用相當於DispathcerServlet
package before.springmvc; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; /** * SpringMVC 非web.xml 配置方式 * * 傳統 DispatcherServlet 配置在 web.xml 的初始化方式 * * 而 servlet 3.0 則是 * 1. 配置 DispatcherServlet 需要建立一個web 初始化類,繼承自 AbstractAnnotationConfigDispathcerServletInitializer * * @author Administrator * */ public class OurWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[] { WebConfig.class }; //指定Web配置類 } @Override protected String[] getServletMappings() {//將 DispatcherServlet 對映到 "/" 路徑 return new String[] { "/" }; } }
2建立一個RootConfig類,指定掃描包位置
此類類似於application.xml ,事務,資料庫等bean 配置,需要配置到本類, 類似於applicationContext 上下文
package before.springmvc; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.web.servlet.config.annotation.EnableWebMvc; /** * 3. 配置 * @author Administrator * */ @Configuration //配置註解掃描的包路徑 @ComponentScan( basePackages={"com.game"}, excludeFilters = { @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)} ) public class RootConfig { }
3.建立一個類繼承WebMvcConfigurerAdapter 類,相當於檢視解析器的作用,同時配置掃描controller 的路徑
類似於application-mvc.xml 檔案,此檔案的配置大部分都可在此類中配置
package before.springmvc;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* 配置 SpringMVC 檢視解析類WebConfig ,需要繼承自 WebMvcConfigureAdapter
* @author Administrator
*
*/
@Configuration
@EnableWebMvc //啟動 springMVC
@ComponentScan(value = {"com.game.controller"}) //配置元件掃描
public class WebConfig extends WebMvcConfigurerAdapter{
//配置jsp 檢視解析器
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/view");//設定預載入路徑/目錄
resolver.setSuffix(".jsp"); //設定允許字尾
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
//配置靜態資源的處理
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();//對靜態資源的請求轉發到容器預設的servlet,而不使用 DispatcherServlet
}
}
完成這三個步驟就可以在具體類中使用controller 註解和servlet註解等,無需web.xml 檔案和 application-mvc.xml檔案就可以啟動專案