Tomcat之嵌入式

springboot直接main方法就可以启动一个项目原因就其中内置了tomcat

原理:

new一个Tomcat对象   

Tomcat tomcat = new Tomcat();

然后设置端口,名称,目录等

接着将我们的service服务映射为路径

Wrapper wrapper = tomcat.addServlet("/", "DemoServlet", new DemoServlet());

wrapper.addMapping("/helloworld");

手写嵌入式Tomcat

代码如下

加入依赖

<dependency>

    <groupId>org.apache.tomcat.maven</groupId>

    <artifactId>tomcat7-maven-plugin</artifactId>

    <version>2.2</version>

</dependency>

两个类:

一个是配置tomcat类

一个自己项目的servlet类

public class EmbeddedTomcatServer {


  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");

        // standardContext.setDefaultContextXml("E:/tomcat/tomcat8.5/conf/web.xml");

          //我们要把Servlet设置进去

          Wrapper wrapper =  tomcat.addServlet("/", "DemoServlet", new DemoServlet());

          wrapper.addMapping("/helloworld");

      }

      //Tomcat跑起来

      tomcat.start();

      //强制Tomcat server等待,避免main线程执行结束后关闭

      tomcat.getServer().await();

  }

}


servlet类

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>嵌入式tomcat!</h1>");

        out.println("</body>");

        out.println("</html>");

    }

}


然后输入地址http://localhost:9091/helloworld

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,469评论 11 349
  • 花间泪,英雄碎,多少往事不堪负累。 尘缘起,思满绪,流水无声落花无痕。 儿女情,窗棱镜,香衣玉袖容颜消陨。 竹林处...
    简书堂阅读 3,783评论 3 2
  • Android 篇 iOS 篇 参考资料 静态代码分析知识库https://www.owasp.org/index...
    MarcusMa阅读 5,778评论 0 5
  • 文章来源链接:https://blog.csdn.net/fengyuzhengfan/article/detai...
    Alex_ct阅读 1,716评论 0 0