springboot之tomcat创建
1、依赖(注意版本,有些版本有问题我用9.0.16和5.1.5不行之后改的)
<!-- java语言操作tomcat -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.16</version>
</dependency>
<!-- <dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>8.5.16</version>
</dependency> -->
<!-- java语言对jsp的支持 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>8.5.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.4.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
<scope>compile</scope>
</dependency>
2、servlet启动demo
/**
* 使用java语言创建tomcat服务器
* tomcat 底层执行程序 最终servlet
* springmvc 底层使用servlet封装
*/
public class TomcatApp {
private static int PORT = 8887;
private static String CONTEX_PATH = "/sirius";
private static String SERVLET_NAME = "indexServlet";
public static void main(String[] args) throws Throwable {
//创建tomcat服务器
Tomcat tomcat = new Tomcat();
//设置端口号
tomcat.setPort(PORT);
//是否设置自动部署
tomcat.getHost().setAutoDeploy(false);
//创建上下文
StandardContext standardContext = new StandardContext();
standardContext.setPath(CONTEX_PATH);
//监听上下文
standardContext.addLifecycleListener(new Tomcat.FixContextListener());
//tomcat容器添加standardContext
tomcat.getHost().addChild(standardContext);
//创建servlet
tomcat.addServlet(CONTEX_PATH, SERVLET_NAME, new IndexServlet());
//servleturl映射
standardContext.addServletMappingDecoded("/index", SERVLET_NAME);
tomcat.start();
System.out.println("tomcat服务器启动成功");
//异步进行接收请求
tomcat.getServer().await();
}
}
3、springboot启动类
public class AppTomcat {
public static void main(String[] args) throws Throwable {
// 使用Java内置Tomcat运行SpringMVC框架 原理:tomcat加载到
// springmvc注解启动方式,就会创建springmvc容器
start();
}
private static void start() throws Throwable {
// 创建Tomcat容器
Tomcat tomcatServer = new Tomcat();
// 端口号设置
tomcatServer.setPort(9090);
// 读取项目路径 加载静态资源
StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/sirius", new File("src/main").getAbsolutePath());
// 禁止重新载入
ctx.setReloadable(false);
// class文件读取地址
File additionWebInfClasses = new File("target/classes");
// 创建WebRoot
WebResourceRoot resources = new StandardRoot(ctx);
// tomcat内部读取Class执行
resources.addPreResources(
new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
tomcatServer.start();
// 异步等待请求执行
tomcatServer.getServer().await();
}
}
/**
* 根配置
* @author EDZ
*/
@Configuration
@ComponentScan("com.sirius.springboot")
public class RootConfig {
}
/**
* springmvc 配置信息
* @author EDZ
*/
@Configuration //加载配置文件
@EnableWebMvc //开启springmvc功能(扫包、视图转换器......)
@ComponentScan(basePackages = {"com.sirius.springboot.controller"})
public class WebConfig extends WebMvcConfigurerAdapter{
//需要配置视图转换器
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);//可以在页面通过${}访问beans
return resolver;
}
}
public class SpittrWebAppInitializer 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[]{"/"};
}
}
@RestController
public class IndexController {
@RequestMapping(value = "/index", produces = "text/html;charset=UTF-8")
public String test(){
return "index纯手写springboot";
}
}
@Controller
public class UserController {
@RequestMapping(value = "/pageIndex")
public String test(){
return "pageIndex";
}
}