學生可以申請 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 包
下載地址:
下載後複製到項目中的 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”頁面。