web开发内嵌tomcat的使用,告别复杂的配置

对于java web开发,最常使用的就是安装tomcat,然后在ide中配置一大堆,然后在进行调试。这种方式对很多新手来说很容易出错。现在说一下使用内嵌的tomcat进行开发。

在tomcat官网,我们可以下载对应的内嵌tomcat,在官网长这样。

tomcat下载

下载解压后将需要用到的jar拷到项目对应的库目录下,然后就可以像普通的java程序一样开发web应用了。下面是启动tomcat的代码。

import java.io.File;

import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;

public class Main {

    public static void main(String[] args) throws Exception {

        String webappDirLocation = "src/main/webapp/";
        Tomcat tomcat = new Tomcat();

        //The port that we should run on can be set into an environment variable
        //Look for that variable and default to 8080 if it isn't there.
        String webPort = System.getenv("PORT");
        if(webPort == null || webPort.isEmpty()) {
            webPort = "8080";
        }

        tomcat.setPort(Integer.valueOf(webPort));

        StandardContext ctx = (StandardContext) tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
        System.out.println("configuring app with basedir: " + new File("./" + webappDirLocation).getAbsolutePath());

        // Declare an alternative location for your "WEB-INF/classes" dir
        // Servlet 3.0 annotation will work
        File additionWebInfClasses = new File("target/classes");
        WebResourceRoot resources = new StandardRoot(ctx);
        resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes",
                additionWebInfClasses.getAbsolutePath(), "/"));
        ctx.setResources(resources);

        tomcat.start();
        tomcat.getServer().await();
    }
}

为了方便调试,可以引入logback,log4j等日志系统来输出调试信息。
当然,也可以使用maven,gradle来构建项目。最后输出的就是一个jar包,可以直接发布到服务器来运行。
如果想发布成*.war的格式,可以参考这篇文章

文章中是使用spring boot的转换方法,如果在其他的项目中就是在ide中将tomcat的依赖设置为provided,然后选择打包方式。或者使用gradle或者maven来构建程序的话,可以参考spring boot的那篇文章。

你可能感兴趣的:(代码点滴)