拯救崩壞的商城APP習作😱
今天上補習班,下午程式碼都寫差不多的時候,開始運行APP才發現連登入的功能都壞掉了(我猜是上週五沒解決的Bug=_=…);另外禍不單行的是,我那電腦的Tomcat突然也顯示不了任何Servlet,連老師的都打不開水逆啦,即使跳過登入功能,商品列表還是空空如也T_T…
由於今天老師講課的時間比較長,我很少時間可以靜下心修Bug,但我認為這會嚴重耽擱到我明天的進度(因為是要基於這份的基礎繼續寫上去的),決定放學回家吃完便當來個大型治療💉
一、Servlet的部分
在開始碰那坨(?)Android Studio的Java程式碼之前,我想解決Servlet無法顯示頁面的問題。雖然時間不夠,無法好好了解今天補習班電腦的Tomcat具體發生什麼事了,但老師講課時,我意識另一個問題-就是我建立Servlet時直接按了Finish,忘記進到下一步勾選產生web.xml
(毆),所以無論今天貓(?)的狀況好不好,其實我這個Servlet在真正的Tomcat上是註定無法顯示的。
由於我有點懶,我直接開個健全(?)的新專案把代碼放過去,如果有人需要一個空白的web.xml
(讀者可能不是用Eclipse寫的)以下的檔案可以提供給您XD
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>專案名稱</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
由於我已經在Servlet的method上方加註了@WebServlet("/s01")
,這邊就不再web.xml
登錄Servlet了-IDE會幫我自動處理。
寫好程式,編譯也沒問題後,打開檔案總管,到剛剛進行作業的專案資料夾
中,將build
裡面的classes
資料夾複製,直接貼到.\專案資料夾\src\webapp\WEB-INF
中。
接著再複製整個WEB-INF
的資料夾,移動到.\Tomcat安裝目錄\webapps
,新增一個資料夾(這會影響到localhost:port號/
後方的第一層網址)並把它貼進去。
最後再到.\Tomcat安裝目錄\bin
下用PowerShell執行startup.bat
啟動Tomcat,打開瀏覽器連到該Servlet的網址,檢查是否能正常運作。

二、那出問題的會是Android APP的部分嗎…?
有時候問題發生得很問號,讀編譯器的報告還是一頭霧水,至少我確定今天不是網路權限沒開這種問題XDrz|||,只好來到處試試了(其實比較理想的做法應該是做個比較乾淨的程式測試出錯的地方在哪裡啦…)
由於損壞的登入功能不是今天的重點(喂)(其實是我覺得可以另外整理一篇,基本上也是上週PrintWriter存放帳號密碼JSON的Servlet讀不到延伸的問題),所以先注重在設定自製的Adapter這個環節到底哪裡出了問題@@…
<activity android:name=".ShopIndex" android:exported="true">
<!--為了偷懶把intent-filter移動到商品頁面的Activity-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" android:exported="true" >
先把剛剛連線成功的Servlet網址貼到InputStream的URL處內心希望就是這裡,用API26支援NIO的模擬器執行APP(其實這邊也不是必要XD),結果…

喔~原來是我AndroidManifest.xml
要顯示的Activityandroid:exported
的部分原先寫成false^^💢-改成ture重新運行APP,商品列表終於顯示啦!
結語
所以今天不是APP的代碼有問題,只是Servlet沒連上XDrz|||
謝謝你路過觀賞這篇犯傻紀錄XD 至於登入畫面有空再修