1. 程式人生 > >web開發內嵌tomcat的使用,告別複雜的配置

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的那篇文章。