使用Java語言建立Tomcat容器,而且經過Tomcat執行Servlet,接下來,將會使用Java語言在SpringBoot建立內置Tomcat,使用註解方式啓動SpringMVC容器。html
代碼實現。
1.pom.xml文件,須要依賴的jar包。web
<dependencies> <!--Java語言操做Tomcat--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.23</version> </dependency> <!--tomcat對jsp的支持--> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>7.0.47</version> </dependency> <!--spring-web--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!--spring-webmvc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.8.RELEASE</version> </dependency> </dependencies>
2.配置SpringMVC、Spring、DispatcherServlet的初始化類:spring
/** * 加載springmvc====dispatcherservlet */ public class SpringWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //加載根配置信息 spring核心 protected Class<?>[] getRootConfigClasses() { return new Class[0]; } //springmvc 加載配置信息 protected Class<?>[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } //springmvc攔截的url映射,攔截全部請求 protected String[] getServletMappings() { return new String[]{"/"};//攔截全部請求 } }
AbstractAnnotationConfigDispatcherServletInitializer這個類負責"初始化Spring容器、SpringMVC容器、配置DispatcherServlet"。apache
- getRootConfigClasses()方法用於獲取Spring應用容器的配置文件,這裏咱們給定預先定義的RootConfig.class;
- getServletConfigClasses負責獲取Spring MVC應用容器,這裏傳入預先定義好的WebConfig.class;
- getServletMappings()方法負責指定須要由DispatcherServlet映射的路徑,這裏給定的是"/",意思是由DispatcherServlet處理全部向該應用發起的請求。
SpringMVC配置,加載SpringMVC容器。這裏的@Configuration至關於springmvc.xml配置文件;@ComponentScan(basePackages = "com.jiuyue.controller")至關於配置文件sringmvc.xml的掃描controler應該還有印象吧;@EnableWebMvc則是開啓SpringMVC功能。tomcat
/** * SpringMVC配置信息 */ @Configuration //至關於配置文件springmvc.xml @EnableWebMvc //開啓SpringMVC功能 @ComponentScan(basePackages = "com.jiuyue.controller")//掃springMVC的 public class WebConfig extends WebMvcConfigurerAdapter { //配置視圖轉換器 }
根配置,加載Spring容器。服務器
/** * 根配置 */ @Configuration @ComponentScan(basePackages = "com.jiuyue")//掃整個spring項目的 public class RootConfig { }
3.啓動類mvc
public class APP { public static void main(String[] args) throws ServletException, LifecycleException { //使用Java內置tomcat運行SpringMVC框架 //原理:tomcat加載到SpringMVC註解啓動方式,就會建立SpringMVC容器 start(); } public static void start() throws LifecycleException, ServletException { //建立tomcat服務器 Tomcat tomcatServer = new Tomcat(); //設置port tomcatServer.setPort(8085); //讀取項目路徑,'/'能夠加載靜態資源 StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath()); //禁止從新載入 ctx.setReloadable(false); //class文件讀取地址 File addtionWebInfoClasses = new File("target/classes"); //建立WebRoot WebResourceRoot resources = new StandardRoot(ctx); //tomcat內部讀取class文件進行執行 //內部虛擬Tomcat空間 resources.addPreResources(new DirResourceSet(resources,"/WEB-INF/classes",addtionWebInfoClasses.getAbsolutePath(),"/")); tomcatServer.start(); System.out.println("Java語言建立Tomcat啓動成功"); //異步進行接收請求 tomcatServer.getServer().await(); } }
controller類app
@Controller public class IndexController { @RequestMapping(value = "/index",produces = "text/html;charset=UTF-8") @ResponseBody public String index(){ return "純手寫Java語言實現SpringBoot註解啓動SpringMVC容器"; } }
訪問效果圖框架
配置視圖解析器異步
直接下WebConfig配置類中配置就能夠,WebConfig就至關於springmvc.xml配置文件,前面咱們在裏面配置了掃包與開啓springMVC功能,接下來就在下面繼續配置視圖解析器。
@Configuration //至關與配置文件 @EnableWebMvc //開啓SpringMVC功能 @ComponentScan(basePackages = "com.jiuyue.controller")//掃springMVC的 public class WebConfig extends WebMvcConfigurerAdapter { //配置視圖轉換器 //SpringMVC視圖解析器 @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/jsp/"); viewResolver.setSuffix(".jsp"); //能夠在JSP頁面中經過${}訪問bean viewResolver.setExposeContextBeansAsAttributes(true); return viewResolver; } }
JspController控制器類
@Controller public class JspController { @RequestMapping(value = "/jspIndex") public String jspIndex(){ return "jspIndex"; } }
WEB-INF/jsp目錄
訪問jspIndex返回jsp頁面
業務邏輯層
將根配置,配置到初始化類
/** * 根配置 */ @Configuration @ComponentScan(basePackages = "com.jiuyue")//掃整個spring項目的 public class RootConfig { }
public class SpringWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //加載根配置信息 spring核心 protected Class<?>[] getRootConfigClasses() { return new Class[]{RootConfig.class}; } //springmvc 加載配置信息 protected Class<?>[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } //springmvc攔截的url映射,攔截全部請求 protected String[] getServletMappings() { return new String[]{"/"};//攔截全部請求 } }
Service類
@Service public class IndexService { public String index(){ return "純手寫Java語言實現SpringBoot註解啓動SpringMVC容器"; } }
控制器類
若是文章有錯的地方歡迎指正,你們互相交流。