嵌入式Tomcat
嵌入式Tomcat
·
1 嵌入式Tomcat介绍
从Tomcat5.0开始提供和支持Embeded版本,即最简化Tomcat Server。Tomcat和Embedded Tomcat版本是同步发布的。
2 引入依赖
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.64</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.64</version>
</dependency>
3 代码示例
final int PORT = 8888;
final String CONTEXT_PATH = "/boot";
//创建tomcat对象
Tomcat tomcat = new Tomcat();
//设置端口
tomcat.setPort(PORT);
//设置主机名
tomcat.setHostname("localhost");
//设置工作目录
tomcat.setBaseDir(".");
Context context = tomcat.addWebapp(CONTEXT_PATH, System.getProperty("user.dir") + "/src/main");
// 生成目录: {工作目录}/work/Tomcat/{主机名}/{应用}
//注册servlet
HelloServlet helloServlet = new HelloServlet();
Wrapper hello = tomcat.addServlet(CONTEXT_PATH, "helloServlet", helloServlet);
//添加servlet映射
hello.addMapping("/hello");
//启动
tomcat.start();
//服务器等待 避免main线程执行结束后关闭
tomcat.getServer().await();
// 访问 http://localhost:8888/boot/hello
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("hello tomcat");
}
}
4 启动SpringMVC
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.64</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.64</version>
</dependency>
/**
* Spring配置类 不扫描controller组件
*/
@ComponentScan(value = "cn.baker.boot", excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)
})
@Configuration
public class SpringConfig {
//父容器
}
/**
* SpringMVC配置列 只扫描Controller组件
*/
@ComponentScan(value = "cn.baker.boot.controller", includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)
}, useDefaultFilters = false)
public class SpringMVCConfig {
//子容器
}
@RestController
public class HelloController {
// 访问 http://localhost:8888/boot/hello
@GetMapping("/hello")
public String hello(){
return "hello world.";
}
}
public static void main(String[] args) throws Exception {
final int PORT = 8888;
final String CONTEXT_PATH = "/boot";
//创建tomcat对象
Tomcat tomcat = new Tomcat();
//设置端口
tomcat.setPort(PORT);
//设置主机名
tomcat.setHostname("localhost");
//设置工作目录
tomcat.setBaseDir(".");
Context context = tomcat.addWebapp(CONTEXT_PATH, System.getProperty("user.dir") + "/src/main");
// 生成目录: {工作目录}/work/Tomcat/{主机名}/{应用}
//注册servlet
DispatcherServlet dispatcherServlet = new DispatcherServlet();
Wrapper hello = tomcat.addServlet(CONTEXT_PATH, "dispatcherServlet", dispatcherServlet);
//添加servlet映射
hello.addMapping("/");
//启动
tomcat.start();
//服务器等待 避免main线程执行结束后关闭
tomcat.getServer().await();
}
更多推荐
所有评论(0)