嵌入式tomcat

SpringBoot中的嵌入式Tomcat详解
本文介绍了嵌入式Tomcat在微服务趋势下的背景,重点讲解了SpringBoot如何实现嵌入式Tomcat,包括如何通过Maven引入Tomcat依赖以及面向接口的开发方式。同时,文中还提及了不同Tomcat版本的启动类差异。

嵌入式tomcat

背景

随着微服务的流程,后台框架springboot越来越流行,前端框架也是html + 模板引擎,慢慢的传统的用tomcat部署的web项目会越来越少。springboot里面集成的是嵌入式的tomcat。

嵌入式tomcat实现

  1. maven引入tomcat依赖
    包括tomcat的所有api,我们可以面向接口开发。
<!-- 引入Maven的Tomcat -->
    <dependency>
	    <groupId>org.apache.tomcat.maven</groupId>
	    <artifactId>tomcat7-maven-plugin</artifactId>
	    <version>2.2</version>
	</dependency>
  1. 实现
  • tomcat启动类
    tomcat6以前启动类名叫enbedded,tomcat7以后启动类叫tomcat
public class EmbeddedTomcatServer {
	/*
	 * 手写嵌入式Tomcat
	 */

	public static void main(String[] args) throws Exception{
		//把目录的绝对的路径获取到
		String classpath = System.getProperty("user.dir");
		System.out.println(classpath);
		//D:\workspace-tomcat\tomcat-maven
		//我们new一个Tomcat
		 Tomcat tomcat = new Tomcat();
		 
		 //插件是6或者6以前的
		 //Embbedded
		 
		 
		 //设置Tomcat的端口
		 //tomcat.setPort(9090);
		 Connector connector = tomcat.getConnector();
		 connector.setPort(9091);
		 //设置Host
		 Host host = tomcat.getHost();
		 //我们会根据xml配置文件来
		 host.setName("localhost");
		 host.setAppBase("webapps");
		 //前面的那个步骤只是把Tomcat起起来了,但是没啥东西
		 //要把class加载进来,把启动的工程加入进来了
		 Context context =tomcat.addContext(host, "/", classpath);

		 if(context instanceof StandardContext){
			 StandardContext standardContext = (StandardContext)context;
			 standardContext.setDefaultContextXml("D:/tools/apache-tomcat-8.0.52/conf/web.xml");
		     //我们要把Servlet设置进去
			 Wrapper wrapper =  tomcat.addServlet("/", "DemoServlet", new DemoServlet());
			 wrapper.addMapping("/king");
		 }
		 //Tomcat跑起来
		 tomcat.start();
		 //强制Tomcat server等待,避免main线程执行结束后关闭
		 tomcat.getServer().await();
		 
	}

}

  • servelet实现
public class DemoServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        out.println("<!DOCTYPE html><html>");
        out.println("<head>");
        out.println("<meta charset=\"UTF-8\" />");
        out.println("<title></title>");
        out.println("</head>");
        out.println("<body bgcolor=\"white\">");
        out.println("<h1>allen V5!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值