如何使用Idea搭建全注解式開發(fā)的SpringMVC項目
1. 創(chuàng)建項目
1.打開Idea,并點擊新建項目
注:使用的是
2022.2的商業(yè)版,該版本跟2021.2的商業(yè)版創(chuàng)建Maven項目不一樣
2.點擊右側(cè)的新建項目 -> 取名 -> 創(chuàng)建

3.這樣我們就創(chuàng)建了一個空依賴的Maven項目
4.打開項目 -> 右鍵項目名 -> 點擊添加框架支持
有時會找不到,重復(fù)這個過程即可

5.勾選Web應(yīng)用程序,然后點擊確定,若出現(xiàn)Web目錄,則加載完畢
這創(chuàng)建的是傳統(tǒng)的
Java Web項目:帶Web目錄的,該目錄下存在WEB-INF目錄

6.補全目錄
創(chuàng)建完的目錄結(jié)構(gòu)如下, 缺失了一些目錄,需要自己在test目錄下創(chuàng)建resource目錄

web目錄:該目錄的文件能被外界訪問WEB-INF目錄:該目錄的文件不對外展示web.xml:主要用來配置Filter、Listener、Servlet等
7.在pom.xml文件里加入如下代碼,然后刷新Maven,這樣會在target里生成war文件
不這樣做的話,工件中就沒有我們通過
Maven引入的Jar包,會導(dǎo)致項目中用到引入Jar包的地方出錯,如下所示
如: 使用@Controller注解設(shè)置請求時,會報404

<!--設(shè)置打包方式為war--> <packaging>war</packaging>
8.或者項目結(jié)構(gòu)->工件->創(chuàng)建lib目錄->添加Jar包
2. 配置Tomcat
點擊當(dāng)前文件

點擊編輯配置

點擊+

找到Tomcat服務(wù)器,點擊下面的本地

點擊配置

- 點擊
Tomcat主目錄旁的文件圖標(biāo),選擇你Tomcat安裝到的文件夾所對應(yīng)的路徑,點擊確定- 這個文件夾應(yīng)該是
bin目錄的父目錄
- 這個文件夾應(yīng)該是
如果是正確的話,
idea會自動幫你填寫Tomcat基目錄

配置工件:點擊修復(fù) -> 會進入一個新頁面 -> 修改應(yīng)用程序上下文,保留一個/即可


我們添加框架支持的時候就會創(chuàng)建一個相關(guān)的工件
3. 示例
1.在pom.xml文件中引入相關(guān)依賴
<!-- 添加springmvc依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version> </dependency> <!-- 添加servlet 依賴 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>
2.創(chuàng)建Controller包
3.在Controller包下創(chuàng)建UserController.java文件, 復(fù)制下面代碼到該文件中
package org.example.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class UserController {
@RequestMapping("/save")
@ResponseBody
public String index() {
return "index";
}
}4.創(chuàng)建Config包
5.在Config包下創(chuàng)建一個專用于SpringMVC的配置類-----SpringMvcConfig
該配置類將@ComponentScan注解只用于掃描Controller包
為什么要有
SpringMVC專門的配置類, 就是為了bean管理起來更清晰
就是將controller層放在springmvc容器中管理, 其他如service層放在父容器Spring中管理
@Configuration
@ComponentScan("org.example.Controller")
//掃描Controller包
public class SpringMvcConfig {
}6.在Config包下創(chuàng)建Tomcat啟動類SpringMvcInit類
- 該類要繼承
AbstractDispatcherServletInitializer類AbstractDispatcherServletInitializer類:用于Tomcat啟動
package org.example.Config;
import org.example.Config.SpringMvcConfig;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
//定義一個servelt容器啟動的配置類,用于加載spring的配置類
public class SpringMvcInit extends AbstractDispatcherServletInitializer {
//1. 將controller層放在springmvc容器中,其他如service層放在父容器,bean管理起來更清晰
//2. 也可以沒有父容器,將所有bean都放在springmvc容器中
@Override
//加載springMVC容器的配置類
protected WebApplicationContext createServletApplicationContext() {
//創(chuàng)建SpringMVC容器
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
//加載配置類--SpringMvcConfig
ctx.register(SpringConfig.class);
return ctx;
}
@Override
//配置哪些請求要被攔截,歸屬SpringMVC處理
// /: 攔截所有請求
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
//加載Spring容器的配置類
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
2. 該類要繼承`AbstractAnnotationConfigDispatcherServletInitializer`類, 用于簡化開發(fā)
public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
//1. 將controller層放在springmvc容器中,其他如service層放在父容器,bean管理起來更清晰
//2. 也可以沒有父容器,將所有bean都放在springmvc容器中
// === 上面的createRootApplicationContext()做的事
//用來加載 springmvc容器的父容器spring的配置類
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
//加載springMVC的配置類
//=== 上面的createServletApplicationContext()做的事
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringConfig.class};
}
//配置哪些請求要被攔截,歸屬SpringMVC處理
// /: 攔截所有請求
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}??到此這篇關(guān)于如何使用Idea搭建全注解式開發(fā)的SpringMVC項目的文章就介紹到這了,更多相關(guān)idea搭建SpringMVC項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合mybatis常見問題(小結(jié))
這篇文章主要介紹了SpringBoot整合mybatis常見問題(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Java中CopyOnWriteArrayList的使用解析
這篇文章主要介紹了Java中CopyOnWriteArrayList的使用解析,CopyOnWriteArrayList適合使用在讀操作遠遠大于寫操作的場景里,比如緩存,它不存在擴容的概念,每次寫操作都要復(fù)制一個副本,在副本的基礎(chǔ)上修改后改變Array引用,需要的朋友可以參考下2023-12-12
Java?根據(jù)XPATH批量替換XML節(jié)點中的值
這篇文章主要介紹了Java根據(jù)XPATH批量替換XML節(jié)點中的值,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

