SpringBoot相对于SpringMvc,除了我们常讲到的“零配置”,其实还有一个特点就是集成了内嵌的tomcat,这就使得我们不再需要去每台虚拟机上面安装一个tomcat。
工程结构
整体比较简单,使用idea创建一个maven工程,包结构如图所示。
pom.xml
此处引入的依赖其实最主要的就是tomcat的jar包:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.33</version>
</dependency>
编码
IndexServlet
写一个名为IndexServlet
的类,继承自HttpServlet并重写其中的doGet方法,这里仅在控制台打印一串文字:
package com.young.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello++++++++++++++++++++++");
}
}
MainTest
一般SpringBoot都有一个入口方法,都是在main方法中运行,此处写一个名为MainTest
的类:
package com.young.app;
import com.young.web.IndexServlet;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
public class MainTest {
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
//分配端口需要使用Connector对象
Connector connector = new Connector();
connector.setPort(8888);
connector.setURIEncoding("UTF-8");
tomcat.getService().addConnector(connector);
IndexServlet indexServlet = new IndexServlet();
Context context = tomcat.addContext("/project",null);
tomcat.addServlet(context,"servlet",indexServlet);
context.addServletMappingDecoded("/index.do", "servlet");
tomcat.start();
//使tomcat处于阻塞状态
tomcat.getServer().await();
}
}
其中IndexServlet
注册到tomcat中一般有三种方式:
(1)使用web.xml:url-mapping标签进行绑定;
(2)在类IndexServlet
上面添加注解WebSevlet
;
(3)调用tomcat的API进行注册。
效果
浏览器输入访问地址:127.0.0.1:8888/project/index.do
成功打印: