Java Web 環境設定

      在〈Java Web 環境設定〉中尚無留言

Tomcat 安裝

本篇說明如何在Windows下安裝 Tomcat,若要在 Linux 下安裝 Tomcat,請參照本人所撰寫的 Nginx SSL 說明。

OpenJDK

安裝 Tomcat 之前,必需先安裝 OpenJDK,請到 Adoptium 或到微軟的 https://learn.microsoft.com/zh-tw/java/openjdk/download 下載。 

下載 Tomcat

Tomcat 本身可以把 Java 語法編譯成 Servlet,然後轉換成 Html 傳送給客戶端,所以它其實也是一個 Web server。那為什麼還要搭配 Apache 或 Nginx 這種 Web Server呢? 一來 Tomcat 在回應客戶端靜態請求的效能不佳,二來它只能編譯 Java,無法解讀PHP。

所以大部份的網站都是使用 Apache 或 Nginx 來當作 Web Server,然後外掛 PHP 來解讀 PHP 網頁,外掛Tomcat 編譯 Java。

若不考慮 Apache 或 Nginx,只想安裝 Tomcat 當作 Web Server 及 Java 編譯器,也是可以運作的。雖說效能較差,但在學習測試階段是撮撮有餘。

請到 http://tomcat.apache.org/ 下載 Tomcat。到 2025/06 最新的版本為 Tomcat 11.0,選擇 10.0 或 11.0 皆可,下載時請依如下圖所示選取 Windows Service Installer。

安裝

安裝時,Connector Port 預設為 80,考慮後面要與 nginx 搭配,所以請把 80 port 改為 8085。然後設定 User Name 及 Password。日後可以使用瀏覽器簡易管理 Tomcat,登入的帳密即為此時的設定,如下圖所示。

啟動權限

系統會將 Tomcat 安裝到 C:\Program Files\Apache Software Foundation 之下,但底下的 Tomcat 11.0 目錄無法進入。請在 Tomcat 11.0 按「右鍵/內容/安全性」,「權限」頁面按「繼續/新增/選取一個主體」,新增登入 Windows 的帳號,把「完全控制」打勾,最後按下「確定」,這樣就可以進入 Tomcat 11.0 目錄。

手動修改 Port

如果安裝 Tomcat 忘了把 80 port 改掉,請把 Tomcat 11.0 目錄下的 conf\server.xml 打開,會看到如下

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"/>

把 port 改成所需的數字,比如 8085

<Connector port="8085" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"/>

修改儲存完後,記得在右下角的工作區把 Tomcat Stop 再 Start ,這樣設定才會生效。

測試

如果上述的 port 設定為 80,打開瀏覽器輸入 http://localhost。若 port 設定為 8085,設輸入 http://localhost:8085,即可看到如下網頁。

更改網頁根目錄

開啟 C:\Program Files\Apache Software Foundation\Tomcat 11.0\conf\server.xml檔案,新增如下藍色的部份,docBase即為網頁根目錄。

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<Context path="/" docBase="e:/server/tomcat" debug="0" reloadable="true"/>
</Host>

更改上述設定儲存後,請記得重新啟動 Tomcat 才能生效。請由右下角的Tomcat圖示按右鍵,Stop service後,再按下 Start service。

然後在網頁根目錄 (e:\server\tomcat) 下撰寫 first.jsp,內容如下

<html>
<head></head>
<body>
<h1>Hello World</h1>
</body>
</html>

然後在瀏覽器上輸入 http://localhost/first.jsp,即可看到Hello World的網頁。

開機自動啟動

在右下圖示按右鍵/configure

防火牆

防火牆的 8085 port 不需手動開啟,因為是由 nginx 直接轉換的。

Nginx 設定

使用 Nginx + Tomcat時請把 Tomat port 改成 8085,把 80 port 留給 Nginx。安裝好 Nginx 後,在 conf\nginx.conf 新增如下藍色的部份,將所有的檔案全都轉向給 Tomcat http://localhost:8085。

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;

        server_name mahalbot.ddns.net;
        location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
        location / {
                #注意若有其它路徑如 thomas/ 後面一定要加 /
                #proxy_pass http://localhost:8085/thomas/;

		proxy_pass http://localhost:8085;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}

	#使用 tomcat 的 靜態網頁比較方便
location /static/ { alias e:/server/static/; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

測試新網址

新的網址則改為如下

http://mahaljsp.ddns.net/first.jsp

新的網址省略了 8085 這個 port。

安裝 SSL

為了讓瀏覽器不再出現不安全的字樣,並防止駭客攔截資料,就必需使用 SSL 將資料加密,經過加密後的網址開頭會改成 https://

SSL 全名為 Secure Sockets Layer,由 Netscape 在1994 年推出。伺服器與客戶端之間的通訊,皆經過加密才傳遞,所以就算訊息被攔截,攔截者也只會看到一堆亂碼而以,完全無法解碼。

大部份的第三方 SSL 認証都需要付費,實在會讓人傾家盪產,還好有 Let’s Encrypt 可以免費使用,不過每三個月就要更新一次認証。請到上面網站下載 certbot-beta-installer-win_amd64_signed.exe 進行安裝。

在取得安全認証前,前面的正式網址 mahaljsp.ddns.net 一定要打通。然後使用系統管理員開啟命令提示字元視窗,輸入如下

certbot --help

然後使用如下指令取得認証。

certbot certonly --webroot

NetBeans 開啟新專案

開發 Java Web 的首選 IDE 以 NetBeans 為主,因為 Intellij Idea 需要 Profession 付費版才支援 Java Web。

關閉系統級 Tomcat

使用 NetBeans 開發 Web 時會自動設定網頁根目錄及相關設定檔,所以需手動停止系統級 Tomcat ,否則在 NetBeans 專案中無法預覽執行。請在工作列的 Tomcat 圖示按右鍵/Stop。

開啟新專案

由 File/Ner Project,選取 Java with Ant/java/Web,右邊 Project 選取 Web Appliction。

接下來輸入 Project Name

接著在 Server 按下 Add,選取 Tomcat,然後依序輸入底下紅框部份的設定。在 Catalina Base 必需選一個空的資料夾。

最後會顯示如下圖,其中 Context Path 一定為 /xxx,不可以為 「/」或空格,因為 「/」已被系統 Tomcat 佔用了。

新增首頁

專案一開始會幫我們設定一個純 html 的 index.html。如果想要使用 Servlet 製作網頁,請在 Source Packages 按右鍵/new Servlet,Class Name 輸入 index,Package 輸入自已的網域,比如 net.ddns.mahaljsp。接下來的 URL Patten 請依預設的「/index」即可。

設定首頁

首頁預設為 index.html/index.htm/index.jsp 三個。如果要使用上述的 /index,則需更改 e:\server\conf\web.xmlC:\Program Files\Apache Software Foundation\Tomcat 11.0\conf\web.xml,開啟 web.xml 後修改如下。

  
  <welcome-file-list>
    <welcome-file>index</welcome-file>  
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>  

上述的 index 不可以寫成 /index 。修改完後記得重新啟動 Tomcat。

執行

在執行前記得停止系統級 Tomcat。然按按下執行按鈕後,即會啟動瀏覽器預覽。預設使用 Edge,若要改成 Chrome,請由專案按右鍵/Properies/Run,然後在 Browser 改成 Chrome。

請注意上述執行時,網址為 http://localhost:8085/thomas/first,這個採用 NetBeans 啟動的 Tomcat,而不是系統級的 Tomcat。若要使用系統級的 Tomcat,需繼續如下操作。

停止 NetBeans Tomcat

NetBeans 的 Services 可以停止 Tomcat,但這部份有 Bug,無法停用,需先把「工作管理員」/「處理程序」裏的「OpenJDK Platform binary」按右鍵/結束工作。

然後進入 NetBeans 的 Services 頁面,選取 Servers/Apache Tomcat or TomEE,按右鍵/stop。

發佈到 Tomcat

將專案下 build/web 裏面的所有檔案及目錄,複制到 Tomcat 所設定的 docBase 路徑下之,然後啟動系統級 Tomcat。

請注意,如果有 static,也需一併複製到 docBase,否則 NetBeans 執行時,會找不到 static 裏的資料,這可能是 NetBeans 的 bug。

因為 Nginx conf 設定 /static 指向 e:\server\static,所以 static 還需複製到 e:\server 之下。

最後輸入如下網址即可看到成果。

http://localhost:8085/first

請注意,系統級的 Tomcat 不需要加 /thomas 的這個 Context path。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *