使用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容器"; } }
控制器类
若是文章有错的地方欢迎指正,你们互相交流。