 附404訪問錯誤全排查)
你好呀我是斷弦承露感謝陪伴 小白博主在線求友 跟著小白學(xué)/Java/軟件設(shè)計/鴻蒙開發(fā)/芯片開發(fā)專欄匯總《軟件設(shè)計師》專欄 | 《Java》專欄 | 《 RISC-V 處理器實戰(zhàn)》專欄 | 《Flutter鴻蒙實戰(zhàn)》專欄 | 《React Native開發(fā)》專欄——|CSDN|——文章目錄Tomcat部署JSP文件完整指南手動部署IDEA工程化實現(xiàn) 附404訪問錯誤全排查 全文知識架構(gòu)圖 一、基礎(chǔ)運行原理? 二、方式一手動部署到本地Tomcat2.1 分步操作步驟1編寫JSP代碼步驟2規(guī)范保存文件步驟3部署到Tomcat目錄步驟4瀏覽器訪問驗證2.2 部署執(zhí)行流程圖? 三、方式二IntelliJ IDEA工程化部署3.1 分步操作步驟1創(chuàng)建Java Web項目第一步切換項目類型為 Jakarta EE第二步第一頁基礎(chǔ)配置第三步選擇 Web 模板 綁定 Tomcat 9第四步創(chuàng)建項目步驟2編寫JSP文件步驟3確認運行配置步驟4啟動運行? 四、JSP訪問404/URL錯誤專項排查 五、常見問題 FAQQ1JSP文件直接雙擊用瀏覽器打開不行嗎Q2修改JSP代碼后需要重啟Tomcat嗎Q3JSP的內(nèi)置對象有哪些為什么out不用定義就能用Q4頁面中文亂碼和控制臺日志亂碼是一回事嗎Q5必須放在ROOT目錄嗎能不能自己建文件夾 六、進階拓展ASCII數(shù)值循環(huán)寫法 官方參考鏈接Tomcat部署JSP文件完整指南手動部署IDEA工程化實現(xiàn) 附404訪問錯誤全排查 文章摘要JSP是Java Web開發(fā)的入門核心技術(shù)必須部署到Servlet容器中才能運行。本文基于Tomcat 9.0.121穩(wěn)定版本講解兩種主流部署方式單文件快速手動部署、IntelliJ IDEA工程化部署附帶可直接運行的字母遍歷示例代碼并針對新手最高發(fā)的「URL錯誤/404找不到」問題做全場景排查所有步驟均可直接復(fù)現(xiàn)。 全文知識架構(gòu)圖JSP部署指南基礎(chǔ)運行原理JSP技術(shù)定位Jasper引擎執(zhí)行流程手動部署方式創(chuàng)建JSP源文件規(guī)范保存文件放入webapps目錄瀏覽器訪問驗證IDEA工程化部署創(chuàng)建Java Web項目編寫JSP代碼配置Tomcat服務(wù)器啟動運行驗證404錯誤專項排查文件后綴隱藏問題部署路徑匹配問題服務(wù)與端口問題上下文路徑問題跨平臺大小寫問題常見問題FAQ進階拓展寫法 一、基礎(chǔ)運行原理JSPJava Server PagesJava服務(wù)端頁面是嵌入Java代碼的動態(tài)網(wǎng)頁技術(shù)不能直接用瀏覽器打開本地文件運行必須部署到實現(xiàn)了Servlet規(guī)范的Web容器中。Tomcat 9 內(nèi)置Jasper 2.3 引擎對應(yīng)實現(xiàn)JSP 2.3規(guī)范負責(zé)解析JSP文件。完整執(zhí)行流程分為兩步轉(zhuǎn)譯階段首次訪問時Jasper將JSP源碼轉(zhuǎn)換為標準的Java Servlet源文件.java編譯階段調(diào)用Java編譯器將.java源文件編譯為字節(jié)碼文件.class。最終由Servlet執(zhí)行頁面邏輯輸出標準HTML頁面返回給瀏覽器。這也是第一次訪問JSP頁面響應(yīng)稍慢后續(xù)訪問速度明顯提升的原因。? 二、方式一手動部署到本地Tomcat適合快速驗證單文件效果無需創(chuàng)建完整項目直接復(fù)用已安裝的Tomcat環(huán)境。2.1 分步操作步驟1編寫JSP代碼新建文本文件寫入如下示例代碼。代碼實現(xiàn)26個小寫字母的遍歷輸出附帶逐行注釋% page contentTypetext/html;charsetUTF-8 pageEncodingUTF-8 languagejava % html head meta charsetUTF-8 title小寫字母遍歷輸出/title style .letter-container { font-size: 18px; letter-spacing: 4px; margin-top: 12px; } /style /head body h326個小寫英文字母輸出結(jié)果/h3 div classletter-container % // currentChar循環(huán)控制變量存儲當(dāng)前遍歷的字符 // 采用小駝峰命名語義清晰符合Java編碼規(guī)范 char currentChar; // 利用小寫字母ASCII碼連續(xù)的特性從字符a遍歷到z // char類型底層為數(shù)值存儲支持直接自增運算 for(currentChar a; currentChar z; currentChar){ // out是JSP內(nèi)置隱式對象類型為JspWriter // 作用是向響應(yīng)頁面輸出文本內(nèi)容無需開發(fā)者手動定義 // nbsp;是HTML空格實體用于字符間視覺分隔避免排版擁擠 out.print(currentChar nbsp;); } % /div /body /html 代碼說明頂部page是JSP頁面指令用于聲明頁面屬性contentType指定瀏覽器解析的內(nèi)容類型與編碼pageEncoding指定文件本身的存儲編碼language指定腳本語言。示例為簡化演示采用內(nèi)聯(lián)樣式工程實踐中建議將CSS樣式抽離到獨立文件實現(xiàn)結(jié)構(gòu)與樣式分離。步驟2規(guī)范保存文件選擇「文件 → 另存為」按以下參數(shù)保存文件名letter.jsp編碼UTF-8保存類型所有文件?? 新手第一大坑Windows系統(tǒng)記事本默認保存編碼為ANSI即GBK且默認隱藏已知文件類型的擴展名直接保存會出現(xiàn)兩個問題文件實際名為letter.jsp.txt訪問返回404文件編碼為GBK與pageEncodingUTF-8沖突頁面中文亂碼。驗證方法打開文件資源管理器頂部「查看」選項卡勾選「文件擴展名」確認文件名后綴僅為.jsp推薦使用VS Code、Notepad等編輯器避免記事本的編碼坑。步驟3部署到Tomcat目錄將保存好的letter.jsp文件放入Tomcat安裝根目錄下的webapps\ROOT文件夾中。目錄說明ROOT是Tomcat的默認根應(yīng)用目錄部署在此目錄下的資源訪問路徑無需加應(yīng)用名前綴直接通過文件名即可訪問。補充也可以在webapps下新建自定義文件夾如myapp放入JSP文件此時訪問地址需要加上文件夾名作為上下文路徑。單JSP文件可直接部署完整Web應(yīng)用還需要遵循標準目錄結(jié)構(gòu)包含WEB-INF等目錄。步驟4瀏覽器訪問驗證確保Tomcat處于啟動狀態(tài)控制臺或logs/catalina.out中出現(xiàn)Server startup日志即為啟動成功打開瀏覽器訪問地址http://localhost:8080/letter.jsp頁面正常顯示26個連續(xù)小寫字母即為部署成功。2.2 部署執(zhí)行流程圖實際為jsp.txt后綴正確未成功成功是否返回404編寫JSP代碼另存為jsp格式 UTF8編碼確認文件后綴正確顯示文件擴展名 重命名文件放入webapps對應(yīng)目錄啟動Tomcat服務(wù)確認服務(wù)啟動成功排查啟動問題瀏覽器訪問對應(yīng)URL頁面是否正常顯示部署完成進入錯誤排查流程? 三、方式二IntelliJ IDEA工程化部署適合正規(guī)項目開發(fā)IDEA自動完成編譯、部署、同步是企業(yè)開發(fā)的標準方式。3.1 分步操作步驟1創(chuàng)建Java Web項目打開IDEA新建項目左側(cè)選擇「Java Enterprise」右側(cè)配置項新版本 IDEA 把原來的「Java Enterprise」正式改名為 Jakarta EE 了入口就在左側(cè) Generators 分類下面。下面按步驟走第一步切換項目類型為 Jakarta EE在左側(cè)列表的 Generators 分組下點擊 Jakarta EE說明這就是舊版 IDEA 里的「Java Enterprise」因為 Java EE 已經(jīng)正式更名為 Jakarta EE所以新版 IDEA 同步改了名字。點擊后右側(cè)界面會自動切換成 Web 項目的配置項。第二步第一頁基礎(chǔ)配置Name給項目命名比如 tomcat-jsp-demoLocation項目存放路徑保持默認或自定義都可以Build system新手推薦選 Maven行業(yè)通用依賴管理更方便JDKTomcat 9 支持 Java 8 及以上全版本下面的 Add sample code 建議取消勾選自己寫代碼更清晰也方便理解第三步選擇 Web 模板 綁定 Tomcat 9點擊右下角的 Next 按鈕進入第二頁配置在 Templates 列表里勾選 Web Application新版的在本頁點擊 Application Server 下拉框選擇你本地安裝的 Tomcat 9.0.121如果下拉里沒有點旁邊的「New」→「Tomcat Server」選中你本地 Tomcat 的根目錄即可Servlet 版本選擇 Servlet 4.0和 Tomcat 9 實現(xiàn)的規(guī)范版本完全對應(yīng)兼容性最好第四步創(chuàng)建項目點擊右下角的 CreateIDEA 會自動生成標準 Web 項目結(jié)構(gòu)并且自動配置好 Tomcat 運行配置。步驟2編寫JSP文件在項目的src/main/webapp目錄上右鍵新建「JSP/JSPX」文件命名為letter.jsp寫入上述JSP代碼并保存。步驟3確認運行配置IDEA右上角會自動生成Tomcat運行配置點擊配置圖標可檢查「服務(wù)器」標簽確認Tomcat安裝路徑、JDK路徑正確「部署」標簽確認已添加當(dāng)前項目的部署記錄應(yīng)用上下文路徑IDEA默認值為項目名概念說明應(yīng)用上下文路徑是Web應(yīng)用的訪問前綴用于區(qū)分同一Tomcat下的多個應(yīng)用。例如上下文路徑為jsp-demo則訪問地址為[http://localhost:8080/jsp-demo/letter.jsp](http://localhost:8080/jsp-demo/letter.jsp)。步驟4啟動運行點擊右上角綠色啟動按鈕IDEA會自動啟動Tomcat并部署項目瀏覽器自動打開項目根路徑。在地址欄末尾追加/letter.jsp即可訪問到頁面效果。 說明IDEA部署模式下文件保存在項目源碼目錄中IDEA會自動同步到Tomcat的部署目錄無需手動復(fù)制文件。? 四、JSP訪問404/URL錯誤專項排查針對訪問時出現(xiàn)「URL拼寫可能存在錯誤請檢查」、頁面返回404的場景按出現(xiàn)概率從高到低逐一排查覆蓋99%的新手場景排名錯誤原因驗證方法解決方案1文件后綴被隱藏最高發(fā)開啟文件擴展名后文件名顯示為letter.jsp.txt重命名文件刪除末尾的.txt后綴2部署路徑不匹配文件放到了bin、conf等非部署目錄或上下文路徑寫錯手動部署必須放在webapps\ROOT或webapps\自定義應(yīng)用名目錄下訪問地址與上下文路徑保持一致3Tomcat未啟動或啟動失敗[http://localhost:8080](http://localhost:8080)也無法打開運行bin/startup.bat查看日志確認啟動成功無報錯信息4端口號不匹配之前修改過Tomcat端口仍用8080訪問查看conf/server.xml中HTTP Connector的port值使用正確端口訪問5應(yīng)用上下文路徑錯誤IDEA部署的項目有應(yīng)用名前綴直接訪問根路徑地址加上項目上下文路徑如[http://localhost:8080/](http://localhost:8080/)項目名/letter.jsp6跨平臺大小寫不匹配Windows開發(fā)正常部署到Linux服務(wù)器返回404Linux系統(tǒng)路徑嚴格區(qū)分大小寫全流程統(tǒng)一使用小寫文件名7瀏覽器緩存舊頁面修改代碼后刷新無變化或之前訪問過404頁面被緩存按CtrlF5強制刷新頁面繞過本地緩存重新請求8應(yīng)用部署失敗啟動日志有異常報錯應(yīng)用未正常加載查看logs/catalina.out日志排查啟動階段的錯誤信息快速定位技巧先訪問[http://localhost:8080](http://localhost:8080)如果Tomcat官方歡迎頁都打不開屬于服務(wù)或端口問題如果歡迎頁正常屬于文件路徑、文件名或上下文路徑問題。 五、常見問題 FAQQ1JSP文件直接雙擊用瀏覽器打開不行嗎不行。JSP是服務(wù)端動態(tài)技術(shù)其中的Java代碼需要服務(wù)端容器編譯執(zhí)行。直接本地打開只會把代碼當(dāng)純文本顯示不會執(zhí)行任何Java邏輯。必須部署到Web容器中通過HTTP協(xié)議訪問。Q2修改JSP代碼后需要重啟Tomcat嗎默認開發(fā)模式下不需要。Tomcat默認開啟JSP熱編譯機制會自動檢測文件更新并重新轉(zhuǎn)譯編譯。注意生產(chǎn)環(huán)境通常會關(guān)閉熱編譯將development設(shè)為false提升性能此時修改JSP必須重啟服務(wù)才能生效。Q3JSP的內(nèi)置對象有哪些為什么out不用定義就能用JSP提供了多個隱式內(nèi)置對象由Jasper引擎在編譯時自動創(chuàng)建開發(fā)者可以直接使用。常用的有out輸出、request請求、response響應(yīng)、session會話、application全局上下文、config配置、pageContext頁面上下文、page頁面實例8個還有1個exception異常對象僅在聲明了isErrorPagetrue的錯誤頁面中可用普通頁面無法訪問。Q4頁面中文亂碼和控制臺日志亂碼是一回事嗎不是同一問題解決方案完全不同頁面中文亂碼是JSP文件編碼、page指令編碼、瀏覽器解析編碼三者不統(tǒng)一導(dǎo)致檢查文件保存編碼和page指令即可控制臺日志亂碼是Tomcat日志編碼與Windows CMD編碼不匹配導(dǎo)致修改logging.properties的控制臺編碼為GBK即可。Q5必須放在ROOT目錄嗎能不能自己建文件夾可以自建目錄。在webapps下新建一個文件夾例如myapp把JSP文件放入其中訪問地址即為[http://localhost:8080/myapp/letter.jsp](http://localhost:8080/myapp/letter.jsp)。每個獨立的子文件夾對應(yīng)一個獨立的Web應(yīng)用上下文。 六、進階拓展ASCII數(shù)值循環(huán)寫法除了直接用字符遍歷也可以通過ASCII碼數(shù)值遍歷兩種寫法最終效果完全一致適合理解底層原理% // 小寫字母a的ASCII碼為97小寫字母z的ASCII碼為122 // 以整數(shù)形式循環(huán)遍歷再強制轉(zhuǎn)換為char字符 for(int asciiCode 97; asciiCode 122; asciiCode){ char letter (char) asciiCode; out.print(letter nbsp;); } %原理說明字符在計算機底層以ASCII數(shù)值存儲小寫字母a-z的ASCII碼連續(xù)遞增因此可以用整數(shù)循環(huán)后強轉(zhuǎn)實現(xiàn)字符遍歷。 官方參考鏈接Apache Tomcat 9 Jasper JSP引擎官方說明Tomcat 9 應(yīng)用部署官方指南Tomcat 9 完整官方文檔如果本文對你有幫助歡迎點贊、收藏?、評論、關(guān)注?個人領(lǐng)域:C/java/Al/軟件開發(fā)/芯片開發(fā)個人主頁:「一名熱衷協(xié)作的開發(fā)者在構(gòu)建中學(xué)習(xí)期待與你交流技術(shù)、共同成長?!棺毅?「與其完美地觀望不如踉蹌地啟程」