Intellij IDEA 旗艦版創建 Spring MVC 項目踩坑記

来源:https://www.cnblogs.com/Luquan/archive/2020/03/13/12483975.html
-Advertisement-
Play Games

學生可以申請 Intellij IDEA 旗艦版免費試用!我終於可以暫時不用折騰社區版啦啦啦啦啦!!! IDEA 旗艦版可以直接創建 Spring MVC 項目,但創建後的項目並不是直接就可以運行,還需要進行一些配置。 一、創建項目 打開 Intellij IDEA,創建項目(Create New  ...


學生可以申請 Intellij IDEA 旗艦版免費試用!我終於可以暫時不用折騰社區版啦啦啦啦啦!!!

IDEA 旗艦版可以直接創建 Spring MVC 項目,但創建後的項目並不是直接就可以運行,還需要進行一些配置。

一、創建項目

打開 Intellij IDEA,創建項目(Create New Project);

在左邊選擇 “Spring”,然後右邊勾選“Spring MVC”,下麵的“Web Application”應該會自動勾選,如果沒有,則手動勾選上;

下麵保持預設選項“Download”就可以,點擊“Next”;

輸入項目名稱(Project name),比如這裡我是“SpringMVCTest”,其他不用管,點擊“Finish”;

等待 IDEA 下載完響應的包;

我們得到一個初始的項目結構:

此時我們按快捷鍵 Ctrl+Alt+Shift+S,打開項目結構(Project Structure),可以看到有兩個 Problems,點擊“Problems”,併在右邊點擊任意一個藍色的“[Fix]”,在子菜單中選擇“Add all misssing dependencies of 'XXX' to the artifact”,點擊“OK”。

這樣,在編譯運行的時候,就會在“項目文件夾\out\artifacts\項目名_war_explodedlib\WEB-INF”中也建立一個 lib 文件夾,並把相關的包給複製過去。

二、配置 Tomcat

點擊右上角的“Add Configuration...”

點擊右上角的加號,在菜單中選擇“Tomcat Server”,併在子菜單中選擇“Local”;

修改“Name”,比如這裡是“Tomcat 9”;

指定 Tomcat 目錄(Application server);

在“After launch”中選擇預設打開的瀏覽器;

可以看到下麵有一個“Warning”,直接點擊右邊的“Fix”;

接著自動跳到“Deployment”,並自動添加了“XXX:war exploded”;

為了方便,我們將下麵的應用上下文改成項目名就好(比如這裡的“/SpringMVCTest”),Server 選項卡這邊的“URL”也會自動變成“http://localhost:8080/應用上下文”的形式(比如這裡會變成“http://localhost:8080/SpringMVCTest”)。點擊“OK”。

此時,點擊右上角的綠色三角形運行項目;

在啟動 Tomcat 之後,IDEA 會自動啟動瀏覽器打開“http://localhost:8080/SpringMVCTest”,顯示的就是 web 文件夾下的 index.jsp 了。

三、配置 View Resolver 和 Controller

1、導入 jstl 包

下載地址:

https://search.maven.org/remotecontent?filepath=javax/servlet/jsp/jstl/javax.servlet.jsp.jstl-api/1.2.2/javax.servlet.jsp.jstl-api-1.2.2.jar

下載後複製到項目中的 lib 文件夾中;

再次打開 Project Structure,點擊“Modules”,在中間選中項目,在右邊點擊加號,選擇第一項“1 JARs or directories...”;

選擇我們剛複製進去的 lib 文件夾中的 jar 包,點擊“OK”;

 

然後 Problems 提示又出問題了,點擊“Problems”,點擊右邊藍色的“[Fix]”,在子菜單中選擇“Add 'javax.servlet.jsp.jstl-api-1.2.2.jar' to the artifact”,點擊“OK”。

2、新建 jsp 頁面

在 web\WEB-INF 文件夾中新建一個文件夾,命名為“jsp”,併在其中新建一個 jsp 文件,命名為“test.jsp”,如圖:

 3、新建控制器類

在 src 文件夾中創建包,包名為“功能變數名稱倒序+項目名+controller”格式,比如我的功能變數名稱是“zhouxy.xyz”,這個項目名稱為“SpringMVCTest”,所以我這裡包名為“xyz.zhouxy.springmvctest.controller”(其實最好應該是“xyz.zhouxy.springmvc.test.controller”)。

在裡面創建一個 Java 類,我這裡類名為“MyController”,如圖,為類加上 @Controller 註釋,在類中創建一個方法,用 @RequestMapping("/test"),將 “/test” 和該方法綁定。方法返回字元串 "test"。

 4、修改配置文件

打開 web.xml,將 org.springframework.web.servlet.DispatcherServlet 對應的映射改成 “/”,使之響應所有訪問本 web 應用的 url(即響應“http://localhost:8080/SpringMVCTest/”,不論後面加了什麼)。如圖:

這裡預設 servlet-name 為“dispatcher”,相應的 Servlet 的配置文件名為“dispatcher-servlet.xml”。如果你修改了,那麼文件名則應該響應地修改為“XXX-servlet.xml”形式。我這裡不作修改。

打開 dispatcher-servlet.xml,修改為如圖所示:

註意,其中 <context:component-scan /> 元素的 base-package 屬性值是我們的 controller 包的完整包名,如果你的包名和我不一樣,註意修改以保持一致。

下麵的 View Resolver,將在控制器類中的方法返回字元串 "test" 時,自動在其前面和後面分別加上“/WEB-INF/jsp/”和“.jsp”,使之成為“/WEB-INF/jsp/test.jsp”。

再次運行項目,瀏覽器像之前一樣打開了“http://localhost:8080/SpringMVCTest/”,我們在其後面輸入“test”,Dispatcher 會在<context:component-scan /> 元素所指定的包中查找帶 @Controller 註釋的類,併在其中找到帶 @RequestMapping("/test") 註釋的請求處理方法,然後執行。如上所述,我們的方法返回了字元串 "test",由 View Resolver “加工”成“/WEB-INF/pages/test.jsp”,返回給 Spring 的org.springframework.web.servlet.DispatcherServlet 對象,也就是 web.xml 中配置的 dispatcher,由它去跳轉到“/WEB-INF/pages/test.jsp”頁面。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 對於剛開始學習前端的伙伴倆說,問得最多的問題就是 ——前端技術現在如此繁雜,我到底應該如何學習。這個話題太大了,幾句話回答不好;也由於這個問題確實困擾了很多前端開發人員,所以我也就著手系統的輸出這篇文章。 雖然這篇文章花了很長時間,肯定也有其局限性;希望各位不吝指出。 入題 我們儼然能感受到前 ...
  • Node.js os 模塊提供了一些基本的系統操作函數。 os.tmpdir()返回操作系統的預設臨時文件夾。 os.endianness()返回 CPU 的位元組序,可能的是 "BE" 或 "LE"。 os.hostname()返回操作系統的主機名。 os.type()返回操作系統名 os.plat ...
  • 由於GET請求直接被嵌入在路徑中,URL是完整的請求路徑,包括了?後面的部分,因此你可以手動解析後面的內容作為GET請求的參數。 node.js 中 url 模塊中的 parse 函數提供了這個功能。 var http=require("http"); var url=require("url"); ...
  • 對於Vue內部來說,不管是根組件還是子組件,都存在this.$router和this.$route兩個屬性,它們的區別如下: $router 指向當前的VueRouter實例,也就是new Vue({router:router})這裡傳入的router實例對象,可以使用上一節里列出的VueRoute ...
  • 從程式員往架構師轉型的路上,蔡學鏞老師總結的“四維架構設計方法論”對我頗有幫助,讓我對架構設計有了更加立體化、系統化的認知,現將學習心得分享出來給需要的小伙伴參考。這套方法論通過空間(X、Y、Z)三個維度及時間T維度將問題域解構成可以輕鬆應對的小方塊,分而治之。同時,空間(X、Y、Z)三個維度聯動,... ...
  • 記錄大話設計學習過程。 代理模式:代理者為其他對象提供代理,以控制對真實對象的訪問。 用戶調用代理者,代理者通過真實的對象引用讓對象去做事情。但是代理者可以附加一些功能,然後才讓真實對象去做事情。 代理模式運用案例:WebService生成代理訪問服務,虛擬代理、安全代理(控制真實對象訪問時的許可權) ...
  • 功能介紹:關鍵詞搜索工具 批量關鍵詞自動搜索採集 自動去除垃圾二級泛解析功能變數名稱 可設置是否保存功能變數名稱或者url 持續更新中 ...
  • 1 簡介 上一篇博客“非同步任務服務簡介”對FutureTask做過簡要介紹與分析,這裡再次對FutureTask做一次深入的分析(基於JDK1.8)。 FutureTask同時實現了Future 、Runnable介面,因此它可以交給執行器Executor去執行這個任務,也可以由調用線程直接執行ru ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...