前言
Tomcat部署方式有多种,其中一个是嵌入式部署;官方提供了嵌入式部署的接口,【org.apache.catalina.startup.Tomcat】,这里简单实现一个嵌入式的例子。更多的例子可以参考官方的测试用例【github.com/apache/tomc…
例子
新建一个java项目,引入maven依赖
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
</dependencies>
新建Servlet
新建一个servlet,需要继承HttpServlet
/**
* 继承HttpServlet
*/
public class TestSevlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
// 输出一个网页
out.println("<!DOCTYPE html><html><head>");
out.println("<meta charset="UTF-8" />");
out.println("<title></title>");
out.println("</head><body>");
// 编辑网页内容
out.println("<h1>hello tomcat.</h1>");
out.println("</body></html>");
}
}
设置入口
设置启动入口,其中有两种端口设置方法;其中第二种方法,需要先设置端口,再执行tomcat.getConnector(),否则设置端口不会生效;
基本的步骤:
- 新建Tomcat实例;
- 设置端口;
- 加载应用,也就是Context;
- 设置应用路径;
- 添加servlet,必须实现HttpServlet;
- 设置servlet路径;
public class StartApp {
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
// 设置端口方法一
// Connector connector = tomcat.getConnector();
// connector.setPort(8092);
// 设置端口方法二
// Set the port for the default connector. The default connector will only be created if getConnector is called.
// 设置默认连接器的端口,默认连接器的创建方式是tomcat.getConnector(),如果不调用这个方法,则设置端口也是没有什么作用的
tomcat.setPort(9012);
tomcat.getConnector();
// context是应用的载体,必须添加
Context context = tomcat.addContext("",null);
// 设置应用路径
context.setPath("/app");
// 添加servlet,并定义别名,别名会在第二种路径设置方式中用到
Wrapper wrapper = Tomcat.addServlet(context, "testServlet123", new TestSevlet());
// 设置servlet路径,方式1
// wrapper.addMapping("/test");
// 设置servlet路径,方式2
context.addServletMappingDecoded("/test","testServlet123");
// 启动
tomcat.start();
}
}
效果
在浏览器中输入地址:http://localhost:9012/app/test