美文网首页中间件
Tomcat之嵌入式

Tomcat之嵌入式

作者: 任嘉平生愿 | 来源:发表于2019-01-12 19:48 被阅读77次

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

相关文章

网友评论

    本文标题:Tomcat之嵌入式

    本文链接:https://www.haomeiwen.com/subject/otwcdqtx.html