Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過(guò)的坑
學(xué)生可以申請(qǐng)Intellij IDEA旗艦版免費(fèi)試用!我終于可以暫時(shí)不用折騰社區(qū)版啦啦啦啦啦!!!
IDEA旗艦版可以直接創(chuàng)建Spring MVC項(xiàng)目,但創(chuàng)建后的項(xiàng)目并不是直接就可以運(yùn)行,還需要進(jìn)行一些配置。
一、創(chuàng)建項(xiàng)目打開(kāi)Intellij IDEA,創(chuàng)建項(xiàng)目(CreateNewProject);
在左邊選擇 “Spring”,然后右邊勾選“Spring MVC”,下面的“WebApplication”應(yīng)該會(huì)自動(dòng)勾選,如果沒(méi)有,則手動(dòng)勾選上;
下面保持默認(rèn)選項(xiàng)“Download”就可以,點(diǎn)擊“Next”;
輸入項(xiàng)目名稱(Projectname),比如這里我是“SpringMVCTest”,其他不用管,點(diǎn)擊“Finish”;
等待 IDEA下載完響應(yīng)的包;
我們得到一個(gè)初始的項(xiàng)目結(jié)構(gòu):
此時(shí)我們按快捷鍵Ctrl+Alt+Shift+S,打開(kāi)項(xiàng)目結(jié)構(gòu)(ProjectStructure),可以看到有兩個(gè)Problems,點(diǎn)擊“Problems”,并在右邊點(diǎn)擊任意一個(gè)藍(lán)色的“[Fix]”,在子菜單中選擇“Addallmisssingdependenciesof ’XXX’totheartifact”,點(diǎn)擊“OK”。
這樣,在編譯運(yùn)行的時(shí)候,就會(huì)在“項(xiàng)目文件夾outartifacts項(xiàng)目名_war_explodedlibWEB-INF”中也建立一個(gè)lib文件夾,并把相關(guān)的包給復(fù)制過(guò)去。
點(diǎn)擊右上角的“AddConfiguration...”
點(diǎn)擊右上角的加號(hào),在菜單中選擇“TomcatServer”,并在子菜單中選擇“Local”;
修改“Name”,比如這里是“Tomcat 9”;
指定Tomcat目錄(Applicationserver);
在“Afterlaunch”中選擇默認(rèn)打開(kāi)的瀏覽器;
可以看到下面有一個(gè)“Warning”,直接點(diǎn)擊右邊的“Fix”;
接著自動(dòng)跳到“Deployment”,并自動(dòng)添加了“XXX:warexploded”;
為了方便,我們將下面的應(yīng)用上下文改成項(xiàng)目名就好(比如這里的“/SpringMVCTest”),Server選項(xiàng)卡這邊的“URL”也會(huì)自動(dòng)變成“http://localhost:8080/應(yīng)用上下文”的形式(比如這里會(huì)變成“http://localhost:8080/SpringMVCTest”)。點(diǎn)擊“OK”。
此時(shí),點(diǎn)擊右上角的綠色三角形運(yùn)行項(xiàng)目;
在啟動(dòng)Tomcat之后,IDEA會(huì)自動(dòng)啟動(dòng)瀏覽器打開(kāi)“http://localhost:8080/SpringMVCTest”,顯示的就是web文件夾下的index.jsp了。
1、導(dǎo)入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
下載后復(fù)制到項(xiàng)目中的 lib文件夾中;
再次打開(kāi)ProjectStructure,點(diǎn)擊“Modules”,在中間選中項(xiàng)目,在右邊點(diǎn)擊加號(hào),選擇第一項(xiàng)“1 JARs ordirectories...”;
選擇我們剛復(fù)制進(jìn)去的lib文件夾中的jar包,點(diǎn)擊“OK”;
然后Problems提示又出問(wèn)題了,點(diǎn)擊“Problems”,點(diǎn)擊右邊藍(lán)色的“[Fix]”,在子菜單中選擇“Add ’javax.servlet.jsp.jstl-api-1.2.2.jar’ to theartifact”,點(diǎn)擊“OK”。
2、新建jsp頁(yè)面
在webWEB-INF文件夾中新建一個(gè)文件夾,命名為“jsp”,并在其中新建一個(gè)jsp文件,命名為“test.jsp”,如圖:
3、新建控制器類
在 src文件夾中創(chuàng)建包,包名為“域名倒序+項(xiàng)目名+controller”格式,比如我的域名是“zhouxy.xyz”,這個(gè)項(xiàng)目名稱為“SpringMVCTest”,所以我這里包名為“xyz.zhouxy.springmvctest.controller”(其實(shí)最好應(yīng)該是“xyz.zhouxy.springmvc.test.controller”)。
在里面創(chuàng)建一個(gè)Java類,我這里類名為“MyController”,如圖,為類加上 @Controller注釋,在類中創(chuàng)建一個(gè)方法,用 @RequestMapping('/test'),將 “/test” 和該方法綁定。方法返回字符串 'test'。
4、修改配置文件
打開(kāi)web.xml,將org.springframework.web.servlet.DispatcherServlet對(duì)應(yīng)的映射改成 “/”,使之響應(yīng)所有訪問(wèn)本web應(yīng)用的 url(即響應(yīng)“http://localhost:8080/SpringMVCTest/”,不論后面加了什么)。如圖:
這里默認(rèn)servlet-name為“dispatcher”,相應(yīng)的Servlet的配置文件名為“dispatcher-servlet.xml”。如果你修改了,那么文件名則應(yīng)該響應(yīng)地修改為“XXX-servlet.xml”形式。我這里不作修改。
打開(kāi) dispatcher-servlet.xml,修改為如圖所示:
注意,其中<context:component-scan />元素的base-package屬性值是我們的 controller 包的完整包名,如果你的包名和我不一樣,注意修改以保持一致。
下面的View Resolver,將在控制器類中的方法返回字符串 'test'時(shí),自動(dòng)在其前面和后面分別加上“/WEB-INF/jsp/”和“.jsp”,使之成為“/WEB-INF/jsp/test.jsp”。
再次運(yùn)行項(xiàng)目,瀏覽器像之前一樣打開(kāi)了“http://localhost:8080/SpringMVCTest/”,我們?cè)谄浜竺孑斎搿皌est”,Dispatcher會(huì)在<context:component-scan />元素所指定的包中查找?guī)?@Controller注釋的類,并在其中找到帶 @RequestMapping('/test') 注釋的請(qǐng)求處理方法,然后執(zhí)行。如上所述,我們的方法返回了字符串 'test',由View Resolver “加工”成“/WEB-INF/pages/test.jsp”,返回給Spring的org.springframework.web.servlet.DispatcherServlet對(duì)象,也就是web.xml中配置的dispatcher,由它去跳轉(zhuǎn)到“/WEB-INF/pages/test.jsp”頁(yè)面。
總結(jié)
到此這篇關(guān)于Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩坑記的文章就介紹到這了,更多相關(guān)Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python使用ProjectQ生成量子算法指令集2. ThinkPHP6使用JWT+中間件實(shí)現(xiàn)Token驗(yàn)證實(shí)例詳解3. JSP出現(xiàn)中文亂碼問(wèn)題解決方法詳解4. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考5. Python如何解決secure_filename對(duì)中文不支持問(wèn)題6. Python 用NumPy創(chuàng)建二維數(shù)組的案例7. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))8. python 定義函數(shù) 返回值只取其中一個(gè)的實(shí)現(xiàn)9. Python函數(shù)參數(shù)中的*與**運(yùn)算符10. 不使用XMLHttpRequest對(duì)象實(shí)現(xiàn)Ajax效果的方法小結(jié)
