一、直接將web項目文件件拷貝到webapps目錄中
這是最常用的方式,Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啟動時,會加載所有這個目錄下的應用。如果你想要修改這個默認目錄,可以在conf下的server.xml文件里修改Host標簽里的appBase值。
這個方法實際上和在IDE開發環境里部署項目是一樣的。
用此方法的訪問路徑為http://localhost:8080/webname
二、修改Server.xml文件
在conf下的server.xml文件里找到Host標簽,在里面添加如下代碼:
1 <Context path="/jfinal_demo" docBase="F:\work\jfinal_demo\WebRoot" reloadable ="true" debug="0" privileged="true"> 2 </Context>
path:是訪問時的根地址,表示訪問的路徑,可以自定義,如上述例子中,訪問該應用程序地址如下:http://localhost:8080/jfinal_demo;
docbase:表示應用程序的路徑,docBase可以使用絕對路徑,也可以使用相對路徑,相對路徑相對於webapps ;
reloadable:表示可以在運行時在classes與lib文件夾下自動加載類包。這個屬性在開發階段通常都設為true,方便開發;在發布階段應該設置為false,提高應用程序的訪問速度 ;
其他屬性參見相關文檔。
三、 在conf\Catalina\localhost 目錄下添加xml配置文件
新建名為jfinal_demo.xml文件,文件內容配置如下:
1 <Context path="/jfinal_demo" docBase="F:\work\jfinal_demo\WebRoot" reloadable ="true" debug="0" privileged="true"> 2 </Context>
Catalina\localhost目錄tomcat下載下來默認是沒有的,首次啟動會自動創建,也可以手動創建;
配置中可以去掉path屬性,因為訪問項目時的根路徑只取決於XML文件的名稱,如上述例子中,訪問該應用程序地址如下:http://localhost:8080/jfinal_demo ;
推薦使用第三種方式,因為不需要修改tomcat默認配置,對Tomcat的侵入性最小,並且如果想取消部署,直接刪除xml配置文件即可。
四、tomcat配置中的 autodeploy 和reloadable的區別是什么?
1.替換WEB-INF/lib
目錄中的jar文件或WEB-INF/classes
目錄中的class文件時,reloadable="true"
會讓修改生效(但代價不小),該選項適合調試。
2.在webapps目錄中增加新的目錄、war文件、修改WEB-INF/web.xml
,autoDeploy="true"
會新建或重新部署應用,該選項方便部署。
五、怎么去除應用名訪問,以及server.xml文件中Context節點的path屬性詳解
詳解path之前討論一下絕對路徑:
絕對路徑在服務端和瀏覽器端區別:
1) 服務端(jsp中java代碼,servlet,jsp標簽中的路徑:因為jsp標簽是在服務端解析的):絕對路徑的根地址(及 / 開頭代表的)是localhost:8080/webApp(應用部署名),轉發是服務器端,所以絕對路徑不用寫應用名,絕對路徑為:/ (開頭) + 具體的路徑;
2) 瀏覽器端(jsp頁面:引入css,js,圖片等等,js中的絕對路徑(例如ajax中的url也屬於瀏覽器端)):絕對路徑的根地址(及 / 開頭代表的)是localhost:8080沒有到應用名,所以瀏覽器端寫絕對路徑需要:/(開頭)+應用名 + / +具體的路徑,如果使用request.getContextPath()獲得的應用名為:/+應用名,第一個斜杠就不用寫了,從第二個 / 開始寫;鏈接(a標簽,圖片img標簽),表單提交,重定向都屬於瀏覽器端,所以這些url的絕對路徑為 (/ + 應用名)開始寫,也就是request.getContextPath() + / +具體的路徑;
springmvc中@RequestMapping注解中的url可以以 '/' 開頭,則是絕對路徑,也可以不要 '/' 則是相對路徑,推薦使用絕對路徑;
下面講解path屬性:
1)tomcat 不要應用名訪問設置(server.xml修改<Host>中的子節點)

六、為什么修改了tomcat的server.xml中的path值,多次重啟后,path值又會被還原成原來的值呢?

如上圖就是eclipse中的servers項目,所以如果想要修改tomcat中的配置文件,需要將這個servers項目中的配置文件一起修改,和tomcat中保持一致,這樣每次重啟tomcat后,servers中配置文件覆蓋tomcat中的也不影響;