美文网首页中间件
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