web開發內嵌tomcat的使用,告別複雜的配置
阿新 • • 發佈:2019-02-10
對於java web開發,最常使用的就是安裝tomcat,然後在ide中配置一大堆,然後在進行除錯。這種方式對很多新手來說很容易出錯。現在說一下使用內嵌的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的那篇文章。