pring boot提供了一种快速使用spring的方式,其中一项就是使用main方法装配启动tomcat。他是如何做到的呢?
一. 首先是一个启动tomcat的简单例子:
0. 先导入tomcat的jar包(准备工作)。
如果是maven项目:
<properties>
<tomcat.version>7.0.47</tomcat.version>
</properties>
<dependencies>
<!--tomcat需要的jar包start-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-coyote</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-dbcp</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-el-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-tribes</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina-ha</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-annotations-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<!--tomcat需要的jar包end-->
</dependencies>
如果只是普通的项目:那就直接把tomcat的lib目录下的所有jar包导入(虽然很多用不到,但是这样快呀),再导入bin目录下的一个名叫tomcat-juli.jar的包即可。
1. 先创建一个类,复制下面的main方法到自己的类中。
public static void main(String[] args) {
Tomcat tomcat = new Tomcat();
// 设置主机名称
tomcat.setHostname("localhost");
tomcat.setPort(8080);
tomcat.setBaseDir(System.getProperty("user.dir"));
StandardContext context = new StandardContext();
// 设置资源路径
context.setDocBase((System.getProperty("user.dir")+"\\src\\main\\resources\\static").replace("\\","/"));
// 设置应用路径
context.setPath("");
context.addLifecycleListener(new Tomcat.FixContextListener());
// 将context加入tomcat
tomcat.getHost().addChild(context);
// 在context中创建表示servlet的Wrapper并返回
Wrapper testServlet = context.createWrapper();
testServlet.setName("test");
testServlet.setServletClass("com.wenliang.servlet.TestServlet");
testServlet.addInitParameter("fork", "false");
context.addChild(testServlet);
context.addServletMapping("/test", "test");
try {
// 启动tomcat
tomcat.start();
} catch (LifecycleException e) {
e.printStackTrace();
}
// 等待请求
tomcat.getServer().await();
}
2. 在刚才的main方法中,加入了一个servlet,所以此时需要先创建此servlet。
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("helloworld");
}
}
3. 启动main方法,输入地址访问 http://localhost:8080/test。
你将看到返回结果:helloworld
至此,一个简单的使用main方法启动tomcat的例子就完成了。
对此做了一些封装,代码提交到了githup下:
ssh地址:git@github.com:wenliangne/wl.git
https地址:https://github.com/wenliangne/wl.git
路径:wl/wl/quickstart